您的位置:首页 > 其它

字符串之移位

2013-08-25 21:04 85 查看
1.循环左移

void reverse(char *start,char *end)
{

char temp = '\0';
while(start <end)
{
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}

}

int main()
{
char str[] = "abcdefghi";
int m = 3;
reverse(str,str + m -1);
reverse(str +m,str + strlen(str) - 1);
reverse(str,str + strlen(str) - 1);
cout << str <<endl;

return 0;
}


2.字符串转置,是循环移动的一种特殊情况

void reverse(char *str)
{
int length = strlen(str);
char *start = str;
char *end= str + length -1;
char temp = '\0';
while(start <end)
{
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}

}


3.移动包含问题

字符串str1是否可以通过移动得到str2,只需要通过判断str2是否在str1str1中即可。

4.字符串单词翻转

"I am from Wuhan." -> "Wuhan. from am I"

void reverse(char *start,char *end)
{

char temp = '\0';
while(start <end)
{
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}

}

void ReverseSentence(char *str)
{
char *start = str;
char *end = str;
while (*end != '\0')
{
if (*end == ' ')
{
reverse(start,end -1);
end++;
start = end;
}
else
{
end++;
}
}
reverse(start,end - 1);
reverse(str,end-1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: