目錄
Language: C++
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <string.h>
using namespace std;
int main() {
char str[1001];
int case_num;
cin >> case_num;
getchar();
while (case_num--) {
cin.getline(str, 1000);
int len = strlen(str);
int i = 0, j = 0;
char tmp;
/* 注意這裏有等於,處理'\0'的情況 */
while (j <= len) {
/* 遇到子串結尾 */
if (str[j] == ' ' || str[j ] == '\0') {
/* 字符串反轉 */
int a = i, b = j - 1;
while (a < b) {
tmp = str[a];
str[a] = str[b];
str[b] = tmp;
a++;
b--;
}
/* 子串指針頭移至下一節 */
i = j + 1;
}
/* 子串指針尾後移 */
j++;
}
cout << str << endl;
}
return 0;
}
Analysis
- 遇到輸入字符串包含空格,想到用cin.getline,前面就要配一個getchar;
- 整體上看就是字符串反轉算法的應用,類似的題直接想到要用兩個指針:頭指針、尾指針