【算法】JZ73 翻转单词序列
此题先对每一个单词进行逆置,然后再整体逆置。
类似。
题解
class Solution { public: void _reverse(string& str, int start, int end) { // [start, end) int i = start, j = end-1; while(i < j) { swap(str[i], str[j]); ++i; --j; } } string ReverseSentence(string str) { if(str.empty()) return str; // 1. 每个子串进行逆置 int i = 0, j = 0; while(i < str.size() && j < str.size()) { // 找到第一个非空格字母 while(i < str.size() && str[i] == ) ++i; // 找到字母结尾处,即第一个空格 j = i+1; while(j < str.size() && str[j] != ) ++j; // 对字符串进行局部逆置 _reverse(str, i, j); // j此时是空格 i = j+1; } // 2. 整体逆置 _reverse(str, 0, str.size()); return str; } };
上一篇:
92天倒计时,蓝桥杯省赛备赛攻略来啦~
下一篇:
刚毕业月薪3千努力工作,几年后就看透了