字符串间的替换

采用顺序存储方式存储串,编写一个指环函数,将串s1中的第i个字符开始的以第J个字符结束的字符构成的子川用s2进行替换,函数名为replace(s1,i,j,s2).例如replace("abcd",1,3,"xyz")返回"xyzd"

strtype *replace(strtype *s1,int i,int j,strtype *s2)
{
 if(i<0 ||i>len(s1))
 {
  cout<<"i不合适"<<endl;
  return s1;
 }
 if(j<i ||j>len(s1))
 {
  cout<<"j不合适"<<endl;
  return s1;
 }
 int k,t;
 if(j-1+1==len(s2))
 {
  for(k=i-1,t=0;t<len(s2);k++,t++)
  {
   s1->ch[k]=s2->ch[t];   
  }
  return s1;
 }
 else if(j-i+1>len(s2))
 {
  for(k=j;k<=len(s1);k++)
   s1->ch[k-(j-i+1-len(s2))]=s1->ch[k];
  for(k=i-1,t=0;t<len(s2);k++,t++)
   s1->ch[k]=s2->ch[t];
  s1->len=s1->len-(j-i+1)+len(s2);
  return s1;
 }
 else if(j-i+1<len(s2))
 {
  for(k=len(s1)-1;k>=j;k--)
  {
   s1->ch[k+len(s2)-(j-i+1)]=s1->ch[k];
  }
  for(k=i-1,t=0;t<len(s2);t++,k++)
  {
   s1->ch[k]=s2->ch[t];
  }
  s1->len=s1->len+len(s2)-(j-i+1);
  return s1;
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值