字符串之移位
1.循环左移
void reverse(char *start,char *end) { char temp = ' '; 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 = ' '; 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 = ' '; while(start <end) { temp = *start; *start = *end; *end = temp; start++; end--; } } void ReverseSentence(char *str) { char *start = str; char *end = str; while (*end != ' ') { if (*end == ' ') { reverse(start,end -1); end++; start = end; } else { end++; } } reverse(start,end - 1); reverse(str,end-1); }