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