classSolution:defreverseWords(self, s:str)->str:
res =""
r =len(s)-1while r >=0:while r >=0and s[r]==' ':
r -=1# 右边界先找到单词末尾 if r <0:break
l = r # 左右边界都指到单词末尾while l>=0and s[l]!=' ':
l -=1# 左边界指到单词前一个空格
res += s[l+1:r+1]
res +=' '
r = l # 右边界指到新的空格iflen(res)>0:
res = res[:len(res)-1]# 去掉结尾空格return res
栈:
c++
classSolution{public:
string reverseWords(string s){// 栈
stack<string> tmp;int n = s.size();for(int i =0; i < s.size(); i++){int index = i;while(i<n && s[i]!=' '){// 遇到单词i++
i++;}// 没遇到单词 i=indexif(i != index){
tmp.push(s.substr(index, i - index));// 从index开始的i-index个数}}
string res;while(!tmp.empty()){
res += tmp.top()+" ";
tmp.pop();}return res.substr(0, res.size()-1);// 去掉结尾空格}}
python
classSolution:defreverseWords(self, s:str)->str:
stk =[]
n =len(s)
i =0while i<n:
index = i
while i<n and s[i]!=' ':
i +=1if i != index:# 指针i碰到单词,i前进了
stk.append(s[index: i])else:
i +=1
res =""while stk:
res += stk[-1]+' '
stk.pop()return res[:len(res)-1]# len(res)-1 去掉结尾空格