解题思路:
(1)切分+填空
class Solution {
public:
vector<string> printVertically(string s) {
vector<string> v;
string str="";
int i=0,maxlen=0,tag=0;
while(i<s.length()) {
if(isalpha(s[i])) {
str="";
while(i<s.length() && isalpha(s[i])) {
str+=s[i++];
}
v.push_back(str);
if(maxlen<=str.length()) {
maxlen=str.length();
tag=v.size()-1;
}
} else i++;
}
vector<string> vec;
for(int i=0;i<maxlen;i++) {
str="";
for(int j=0;j<v.size();j++) {
if(i>=v[j].length()) str.push_back(' ');
else str+=v[j][i];
}
int k=str.length()-1;
while(str[k]==' ') k--;
vec.push_back(str.substr(0,k+1));
}
return vec;
}
};

该博客介绍了如何实现一个C++函数,将输入的字符串按垂直方向打印。代码中首先通过遍历输入字符串,收集所有字母子串,然后构建新的字符串矩阵,确保所有行的长度相等,最后返回垂直打印后的字符串数组。
690

被折叠的 条评论
为什么被折叠?



