字符串的普通逆置
描述
输入一个字符串,要求输出它逆置之后的新的字符串
例如:
输入 I like beijing.
输出 .gnijieb ekil i
思路
找出需要逆置字符串的首 start 、尾 end 位置进行标记,然后交换首尾空间内容,然后修改首尾变量
void Reverse(char* str, int start, int end)
{
end--; //[) 左闭右开
while (start < end) {
char tmp = str[start];
str[start] = str[end];
str[end] = tmp;
start++; end--;
}
}
字符串的单词逆置
描述
输入 i like beijing.
输出 beijing. like i
思路
首先,实现字符串的普通逆置:
i like beijing. -------------> .gnijieb ekil i
然后实现单词的逆置:
.gnijieb ekil i ----------> beijing. like i
void Reverse(char* str, int start, int end)
{
end--; //[) 左闭右开
while (start < end) {
char tmp = str[start];
str[start] = str[end];
str[end] = tmp;
start++; end--;
}
}
void ReverseWork(char* str)
{
int start = 0, end = 0;
while (str[start] != '\0') {
while (str[end] != '\0'&&str[end] != ' ')
end++;
Reverse(str, start, end);
//如果 end == 100 ,即 end 位于字符串末位时
if (str[end] != '\0')
start = end + 1;
else
start = end;
end++;
}
}
int main()
{
char str[100] = { 0 };
gets(str); //C语言中使用
int n = strlen(str);
//整体反转
Reverse(str, 0, n);
//单词反转
Reverse(str);
printf("%s", str);
return 0;
}
Tips:
欢迎留言讨论鸭~~