现在的位置: 首页 > 综合 > 正文

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

2013年01月19日 ⁄ 综合 ⁄ 共 828字 ⁄ 字号 评论关闭
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';
}
此代码暂时没有通过调试,我随手写的:)

抱歉!评论已关闭.