[模擬題]leetcode1324: 豎直打印單詞(medium)

題目:
在這裏插入圖片描述
題解:

  • 模擬題
  • 第一步:利用istringstream分割字符串,然後找到最長單詞的長度,這樣可以就確定結果數組的大小了。
  • 第二步:還是利用istringstream分割單詞,單詞長度不足最長長度的在後面補空格。
  • 第三步:遍歷res,刪除每個單詞尾部的空格。

代碼如下:

class Solution {
public:
    vector<string> printVertically(string s) {
        istringstream str(s);
        string word;
        int length=0;
        //1、利用istringstream分割字符串來獲得單詞的最長長度
        while(str>>word){
            length=max(length,int(word.size()));
        }
        vector<string> res(length);
        istringstream str1(s);
        //2、利用istringstream分割字符串來添加單詞,不夠最長長度的補空格
        while(str1>>word){
            int size=word.size();
            for(int i=0;i<length;++i){
                if(i<size){
                    res[i].push_back(word[i]);
                }
                else{
                    res[i].push_back(' ');
                }
            }
        }
        //3、遍歷res來刪除每個單詞的尾部的空格
        for(int i=0;i<length;++i){
            int j=res[i].size()-1;
            while(res[i][j]==' '&&j>=0){
                res[i].pop_back();
                j--;
            }
        }
        return res;
    }
};
發佈了509 篇原創文章 · 獲贊 173 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章