问答题
已知:s=‘(xyz)+*’,t=’(x+z)*’。试利用联结、求子串和置换等基本运算,将s转化为t。【北方交通大学1996一、3(5分)】【山东科技大学2002一、6(5分)】
【正确答案】正确答案:题中所给操作的含义如下: //:连接函数,将两个串连接成一个串 substr(8,i,j):取子串函数,从串s的第i个字符开始,取连续j个字符形成子串 replace(s1,i,j,s2):置换函数,用s2替换s1中从第i个字符开始的连续j个字符 本题有多种解法,下面是其中的一种: (1)s1=substr(s,3,1) //取出字符:’y’ (2)s2=substr(s,6,1) //取出字符:‘+’ (3)s3=substr(s,1,5) //取出子串:‘(xyz)’ (4)s4=substr(s,7,1) //取出字符:‘*’ (5)s5=replace(s3,3,1,s2)//形成部分串:"(X+Z)"。 (6)s:sslls4//s1 //形成串t即(X+Z)*y*
【答案解析】