倒置字符串
要求:将一句话的单词进行倒置,标点不倒置。
eg: I like beijing. 经过倒置后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100;
输出描述:依次输出倒置之后的字符串,以空格分割
思路**:
1.将整个字符串进行逆序得:.gnijieb ekil I
2.再将每个单词进行逆序即可得:beijing. like I
//要求:将一句话的单词进行倒置,标点不倒置
//输入: I like beijing.
//输出:beijing. like I
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//1.先对整个字符串进行逆序
void reverse(char* str, int len) {
//str为起始位置
//str+len 为结束位置
char* left = str;
char* right = str + len - 1;
while (left < right) {
//进行逆序
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
//2.对每个单词进行逆序
void reverseWord(char* input) {
reverse(input, strlen(input));
//通过start指针遍历字符串
char* start = input;
while (*start != '\0') {
char* end = start;
while (*end != ' ' && *end != '\0') {
end++;
}
reverse(start, end - start);
if (*end == '\0') {
break;
}
else {
start = end + 1;
}
}
}
int main() {
while (1) {
char input[1024] = { 0 };
char* ret = gets(input);
if (ret == NULL) {
break;
}
reverseWord(input);
printf("%s\n", input);
}
return 0;
}