日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 151. 翻转字符串里的单词(栈)

發布時間:2024/7/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 151. 翻转字符串里的单词(栈) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目信息
    • 2. 解題

1. 題目信息

給定一個字符串,逐個翻轉字符串中的每個單詞。

示例 1:輸入: "the sky is blue" 輸出: "blue is sky the" 示例 2:輸入: " hello world! " 輸出: "world! hello" 解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。 示例 3:輸入: "a good example" 輸出: "example good a" 解釋: 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。

說明:

無空格字符構成一個單詞。
輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-words-in-a-string
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

《劍指Offer》同題:面試題58 - I. 翻轉單詞順序

2. 解題

  • 利用棧先進后出
  • 字符不為空,且不在最后一個位置時,加入字符串
  • 字符不為空,且在最后一個位置時,加入字符串,并入棧
  • 字符為空,如果當前字符串不為空,字符串入棧
  • 最后依次輸出棧頂,中間加空格,末尾沒有空格

class Solution { public:string reverseWords(string s) {while(!s.empty() && s.back()==' ')s.pop_back();while(!s.empty() && s.front()==' ')s.erase(s.begin());if(s.empty())return "";stack<string> stk;string str;for(int i = 0; i < s.size(); ++i){if(s[i] != ' ' && i != s.size()-1)str.push_back(s[i]);else if(s[i] != ' ' && i == s.size()-1){str.push_back(s[i]);stk.push(str);}else{if(str != ""){stk.push(str);str = "";}}}str = "";while(!stk.empty()){str += stk.top();str.push_back(' ');stk.pop();}str.pop_back();return str;} };
  • 預先在s最后加一個空格,能簡化代碼
class Solution { public:string reverseWords(string s) {while(!s.empty() && s.back()==' ')s.pop_back();while(!s.empty() && s.front()==' ')s.erase(s.begin());if(s.empty())return "";s.push_back(' ');//處理邊界方便int i, n = s.size();string ans;stack<string> stk;for(i = 0; i < n; ++i){if(s[i] != ' ')ans += s[i];else// (s[i]==' '){if(ans.size()){stk.push(ans);ans.clear();}}}while(!stk.empty()){ans += stk.top()+' ';stk.pop();}ans.pop_back();return ans;} };

總結

以上是生活随笔為你收集整理的LeetCode 151. 翻转字符串里的单词(栈)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。