题解 | #单词倒排# 两部分逻辑功能
单词倒排
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,实现对字符串的反转。