程序天天练(2):字符串中删除子字符串

Ex: 字符串中删除子字符串
Date:Jan. 8th, 2005

思路:在书中有从字符串中删除一个字符的例子,从这个例子出发,将一个字符扩展到一个字符串即可。

分析:从一个字符串s中删除一个字符c的思路:
1.用两个变量i,j分别表示源字符串下一个字符的index和目标字符串下一个字符的index.
2.遍历源字符串的每一个字符,取其中的任意一个字符,若此字符不等于c,保存此字符,并且j加1;否则丢弃此字符,j不变。

扩展这个思路,就可以实现从字符串中删除子字符串,伪码为:
1.用两个变量i,j分别表示源字符串下一个字符的index和处理后下一个字符的index.
2.设置一个标志位,表示是否有匹配的字符串存在。
2.for( 源字符串中的任何一个字符 )
     if( 从此字符开始的字符串和需要匹配的字符串匹配 ) 标志位=真
     else                                        标志位=假
     if( 标志位=假 )                              保存此字符,并且j加1;否则丢弃此字符,j不变

下面是C代码,实现了上面的思路:
void Squeeze( char s[], char t[] )
{
    int i,j,k;
    i=j=k=0;
    int flag=0;
    for( i=j=0; s[i]!='/0'; ++i )
    {
        for( k=0; t[k]!='/0';++k )
        {
            if( s[i+k]==t[k] ) flag=1;
            else
            {
                flag=0;
                break;
            }
        }
        if( !flag ) s[j++]=s[i];
    }
    s[j]='/0';
}
此代码暂时没有通过调试,我随手写的:)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值