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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 1324. 竖直打印单词

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1324. 竖直打印单词 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 題目

給你一個字符串 s。請你按照單詞在 s 中的出現順序將它們全部豎直返回。
單詞應該以字符串列表的形式返回,必要時用空格補位,但輸出尾部的空格需要刪除(不允許尾隨空格)。
每個單詞只能放在一列上,每一列中也只能有一個單詞。

示例 1: 輸入:s = "HOW ARE YOU" 輸出:["HAY","ORO","WEU"] 解釋:每個單詞都應該豎直打印。 "HAY""ORO""WEU"示例 2: 輸入:s = "TO BE OR NOT TO BE" 輸出:["TBONTB","OEROOE"," T"] 解釋:題目允許使用空格補位,但不允許輸出末尾出現空格。 "TBONTB" "OEROOE" " T"示例 3: 輸入:s = "CONTEST IS COMING" 輸出:["CIC","OSO","N M","T I","E N","S G","T"]提示: 1 <= s.length <= 200 s 僅含大寫英文字母。 題目數據保證兩個單詞之間只有一個空格。

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

2. 解題

  • 先把單詞的末尾加個空格,方便找到字符串中每個單詞的起始位置
  • 對每個單詞的起始位置處的字符拼起來,遇到空格的下標置為-1,否則+1
  • 生成的字符串,刪除結尾的空格,若為空,結束查找
class Solution { public:vector<string> printVertically(string s) {vector<int> idx;s.push_back(' ');int i, n = s.size();char prev = ' ';for(i = 0; i < n; ++i){if(prev==' ' && s[i] != ' ')idx.push_back(i);//每個單詞起點prev = s[i];}vector<string> ans;string str;while(1){str = "";for(i = 0; i < idx.size(); ++i){if(idx[i] != -1)//下標不為-1{str += s[idx[i]++];//拼接字符,下標+1if(s[idx[i]] == ' ')//+1后為空字符idx[i] = -1;//置為-1}elsestr += ' ';//為-1的話,補空格}while(!str.empty() && str.back()==' ')str.pop_back();//刪除尾部空格if(str == "")break;//字符串空,說明,全部到達末尾,結束elseans.push_back(str);}return ans;} };

0 ms 6.5 MB

總結

以上是生活随笔為你收集整理的LeetCode 1324. 竖直打印单词的全部內容,希望文章能夠幫你解決所遇到的問題。

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