题解 | #单词倒排# 两部分逻辑功能
单词倒排
https://www.nowcoder.com/practice/81544a4989df4109b33c2d65037c5836
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
string input,output;
getline(cin,input);
int n = input.size();
int pre = 0;
for(int i=n-1; i>=0; i--){
if((input[i] >= 'a' && input[i] <= 'z') || (input[i] >= 'A' && input[i] <= 'Z')){
output += input[i];
pre = 1;
}else if(pre == 1){
output += " ";
pre = 0;
}
}
// cout << output << endl;
for(int i=0;i<output.size();i++){
int len = 0,tmp = i;
while( i<output.size() && ((output[i] >= 'a' && output[i] <= 'z') || (output[i] >= 'A' && output[i] <= 'Z')) ){
len++;
i++;
}
// cout << len << endl;
if(len > 0){
reverse(output.begin()+tmp,output.begin()+tmp+len);
// cout << output << endl;
}
}
cout << output << endl;
return 0;
}
// 64 位输出请用 printf("%lld")
逻辑1,实现对字符串中非字符部分的转换。
逻辑2,实现对字符串的反转。
联想公司福利 1548人发布