例如,串对象和连接产生新串对象s的过程如下图所示。 data length data length 串对象s: bd-串对象23-3 I=s Concat(t) 串对象l:abdd山23-7 length
例如,串对象s和t连接产生新串对象s1的过程如下图所示。 串对象 s: 串对象 t: 串对象 s1:a b c d 1 2 … 7 s1=s.Concat(t) data length a b c d … 4 data length 1 2 3 … 3 data length 3
(5)求子串 Substr(i 产生由当前串中第论个字符开始的、连续个字符组成的子 串,并返回这个子串。当参数i、正确时返回一个空串。对 应的算法如下 public sqstring Class SubStr(inti, int j) { SqString Class nstr= new Sqstring Class);/新建一个空串 int k if(i<=0‖li> length‖j<0‖i+j-1> length return nstra /参数不正确时返回空串 for(k=-1;k<+j-1;k++)/将 str datai.计+j-1→nstr nstrdata[k-i+l=data nstrlength=j return nstr: /返回新建的顺序串
(5)求子串SubStr(i,j) 产生由当前串中第i个字符开始的、连续j个字符组成的子 串,并返回这个子串。当参数i、j不正确时返回一个空串。对 应的算法如下: public SqStringClass SubStr(int i,int j) { SqStringClass nstr=new SqStringClass(); //新建一个空串 int k; if (i<=0 || i>length || j<0 || i+j-1>length) return nstr; //参数不正确时返回空串 for (k=i-1;k<i+j-1;k++) //将str.data[i..i+j-1]nstr nstr.data[k-i+1]=data[k]; nstr.length=j; return nstr; //返回新建的顺序串 }
(6)串插入 Instr(i,s) 将串插入到当前串的第个位置中产生一个新串,并返 回这个新串。当参数不正确时返回一个空串。对应的算法如 下 public sqstring Class InsStr(inti, Sqstring class s int j Sqstring Class nstr= new AsTring Class;/新建一个空串 if (i<=0 i>length+1 /参数不正确时返回空串 return nstr. for(j=0;j<i-1;j++) /将当前串data0.i-2→nstr nstr data[jl-dataljl for (i=0; j<s length; j ++ /E3s. data O.s. length-1Enstr nstr data i+j-1=s data j; for(j=i-1ij< ength:j计+)将当前串 data i1 length-1l→nstr nstr data slength+jl=data[jl: nstrlength=length+.length; return nstr; 返回新建的顺序串
(6)串插入InsStr(i,s) 将串s插入到当前串的第i个位置中产生一个新串,并返 回这个新串。当参数不正确时返回一个空串。对应的算法如 下: public SqStringClass InsStr(int i,SqStringClass s) { int j; SqStringClass nstr=new SqStringClass(); //新建一个空串 if (i<=0 || i>length+1) //参数不正确时返回空串 return nstr; for (j=0;j<i-1;j++) //将当前串data[0..i-2]nstr nstr.data[j]=data[j]; for (j=0;j<s.length;j++) //将s.data[0..s.length-1]nstr nstr.data[i+j-1]=s.data[j]; for (j=i-1;j<length;j++) //将当前串data[i-1..length-1]nstr nstr.data[s.length+j]=data[j]; nstr.length=length+s.length; return nstr; //返回新建的顺序串 }
(7)串删除 Destr(ij) 从当前串中删去第字符开始的连续个字符产生一个子 串,并返回这个子串。当参数不正确时返回一个空串。对应 的算法如下 public sqstring Class DesTr(inti, int j) int k; Sqstring Class nstr= new Sqstring Class9);/新建一个空串 if(i<=0‖i> length‖i+j-1> length)/参数不正确时返回空串 return nstr, for(k=0;k<i-1;k++) /将当前串data|0.i-2|中nsr nstrdata k]=data k]; for(k=+j-;k< ength;k++)/将当前串 datai+j-1 length-11nsr nstr data[k-JI=data[k; nstrlength=length-j; return nstr; 返回新建的顺序串
(7)串删除DelStr(i,j) 从当前串中删去第i个字符开始的连续j个字符产生一个子 串,并返回这个子串。当参数不正确时返回一个空串。对应 的算法如下: public SqStringClass DelStr(int i,int j) { int k; SqStringClass nstr=new SqStringClass(); //新建一个空串 if (i<=0 || i>length || i+j-1>length) //参数不正确时返回空串 return nstr; for (k=0;k<i-1;k++) //将当前串data[0..i-2]nstr nstr.data[k]=data[k]; for (k=i+j-1;k<length;k++) //将当前串data[i+j-1..length-1]nstr nstr.data[k-j]=data[k]; nstr.length=length-j; return nstr; //返回新建的顺序串 }
(8)串替换 Repstr(ij,s) 将当前串中第个字符开始的连续个字符用串s替换而产生 一个新串,并返回这个新串。当参数不正确时返回一个空串。 对应的算法如下: public sqstringclass repstr(int i, int j, Sqstring Class s) int k: Sqstring Class nstr= new Sqstring Class9;/新建一个空串 if(i<=0‖i> length i+j1> length)/参数不正确时返回空串 return nstr, for(k=0;k<i-1;k++) /将当前串data|0.i-2nstr nstr data k=data[k i for(k=0; k<s length; k++) //3s data(O.s length-1+nstr nstr data i+k-1=S data[k; for(k=+j-1;k< ength;k+)将当前串 datai+j-1. .length-1→nsr nstr datas length+k-jl=data[ k]; nstrlength=length-j+slength return nstr; 返回新建的顺序串
(8)串替换RepStr(i,j,s) 将当前串中第i个字符开始的连续j个字符用串s替换而产生 一个新串,并返回这个新串。当参数不正确时返回一个空串。 对应的算法如下: public SqStringClass RepStr(int i,int j,SqStringClass s) { int k; SqStringClass nstr=new SqStringClass(); //新建一个空串 if (i<=0 || i>length || i+j-1>length) //参数不正确时返回空串 return nstr; for (k=0;k<i-1;k++) //将当前串data[0..i-2]nstr nstr.data[k]=data[k]; for (k=0;k<s.length;k++) //将s.data[0..s.length-1]nstr nstr.data[i+k-1]=s.data[k]; for (k=i+j-1;k<length;k++) //将当前串data[i+j-1..length-1]nstr nstr.data[s.length+k-j]=data[k]; nstr.length=length-j+s.length; return nstr; //返回新建的顺序串 }