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';
}
此代码暂时没有通过调试,我随手写的:)
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';
}
此代码暂时没有通过调试,我随手写的:)