2007-03-13 | 两个小字符串题目
转自:http://dododododo.blog.sohu.com/
删除特定字符
//o(n+m)
void RemoveChars(char str[], char remove[])
{
int src=0, dest=0;
int i;
char array[256];
for(i=0;i<256;i++)
{
array[i] = 0;
}
while (remove[src])
{
array[remove[src]] = 1;
src++;
}
src=dest = 0;
while (str[src])
{
if (array[str[src]] == 0)
{
str[dest++] = str[src];
}
src++;
}
}
颠倒单词出现的顺序,如"I love this world !"-->"! world this love I"
方法: 先整个反转,然后对每个单词进行反转
void str_reverse(char str[],int start, int end)
{
while (start<end)
{
str[start] += str[end];
str[end] = str[start] - str[end];
str[start] -=str[end];
start++;
end--;
}
}
void reverse(char str[])
{
int start = 0,end;
end = strlen(str)-1;
str_reverse(str, start,end);
while (start<end)
{
int e=0;
if (str[start] !=' ')
{
e =start;
while (str[start++] !=' ');
start--;
str_reverse(str,e,start);
}
else
start++;
}
}