字符串之移位
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);
}
一切源于对计算机的热爱

浙公网安备 33010602011771号