題目:
題解:
- 模擬題
- 第一步:利用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;
}
};