题目
题目描述
C老师有一个字符串 s,他邀请你按照单词在 s 中的出现顺序将它们全部竖直输出。
单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)。
格式
解释:
1 <= s.length <= 200
s 仅含大写英文字母
题目数据保证两个单词之间只有一个空格
题目允许使用空格补位,但不允许输出末尾出现空格,样例2中字符串T后面没有空格的
样例
Input1
HOW ARE YOU
Output1
HAY
ORO
WEU
Input2
TO BE OR NOT TO BE
Output2
TBONTB
OEROOE
T
思路
众所周知
单词是从左向右读的,而本题要求"竖直输出"便是二维数组的操作与运用;
难点
如何在结尾不输出空格?
解决方法
1.在输出之前跑一遍;
2.在输入时存入一个一维数组;
(如果各位大佬有更简单的方法,请赐教)
代码
#include <bits/stdc++.h>
using namespace std;
char n[261][261];
int main() {
freopen("string.in","r",stdin);
freopen("string.out","w",stdout);
int l=0,le=-114514;
for(int i=1;cin>>n[i];i++){
string s=n[i];
l++;
int len=s.size();
le=max(le,len);
}
for(int i=0;i<=le;i++){
int ll=0;
for(int j=1;j<=l;j++){
if(n[j][i]!='\0')
ll=j;
}
for(int j=1;j<=ll;j++){
if(n[j][i]!='\0')
cout<<n[j][i];
else
cout<<" ";
}
cout<<"\n";
}
return 0;
}