这道题本质上是一个字符串模拟题,也可以看成双指针处理字符串分段的问题。
题目要求:
小明负责开发一个文本处理工具,该工具需要实现一个功能,即给定一个英文句子,反转句子中每个单词的字符顺序,同时保留空格和单词的初始顺序。
输入
I love CMB
输出
I evol BMC
结合题干,请补全下面程序中 4 处"【】“框内缺失的代码,以实现该功能需求。答题后请保留"【】"框。
#include <iostream>
#include <string>
using namespace std;
void reverseWord(string &word) {
int left = 0;
int right = word.length() - 1;
while (【1】) {
char temp = word[left];
word[left] = word[right];
word[right] = temp;
left++;
right--;
}
}
string reverseWords(string s) {
string result = "";
int i = 0;
int n = s.length();
while (i < n) {
if (【2】) {
// 处理单词
int j = i;
while (【3】) {
j++;
}
string word = s.substr(i, j - i);
reverseWord(word);
result += word;
i = j;
} else {
// 处理空格
int j = i;
while (【4】) {
j++;
}
string spaces = s.substr(i, j - i);
result += spaces;
i = j;
}
}
return result;
}
int main() {
string s = "I love CMB";
string result = reverseWords(s);
cout << result << endl;
return 0;
}
本题属于以下题库,请选择所需题库进行购买