题目的意思是,把每个单词的头部对整齐然后输出,不足时用空格补齐,特别的是,最后一个单词不论长度差,仅仅输出就好。
思路如下:
可以有一个数组储存第n个单词的最大长度,然后让待输出的单词后方补齐空格。
使用vector来储存每一行的句子,和句子中的每一个单词(实际是需要用空格隔开的字符串),因为每一行的句子中有空格,所以注意要使用getline来读取,读取后处理的时候,可以使用streamstring来把句子转换成流输入的形式,默认是空白符断开,然后储存到vector里面,这样操作就简洁了许多。
下面是代码实现:
#include <bits/stdc++.h>
using namespace std;
int main()
{
//freopen("t.txt", "w", stdout);
int maxlen[500] = { 0 }, num = 0;//maxlen是某一位单词的最大长度
vector <string> out[5000];
string in;
while (getline(cin, in))
{
int cnt = 0;
string temp;
vector <string> restore;
stringstream ss(in);//将输入in转换
while(ss >> temp)
{
//cout << temp << endl;
restore.push_back(temp);//将单词压入vector
int length = temp.size();
maxlen[cnt] = max(maxlen[cnt], length);//计算第cnt位单词的最大长度
cnt++;
}
out[num++] = restore;
}
for (int i = 0; i < num; i++)
{
for (unsigned int j = 0; j < out[i].size(); j++)
{
cout << out[i][j];
if (j == out[i].size() - 1)//每一行最后一个单词
break;
unsigned int len = maxlen[j] - out[i][j].size();
while (len--)
cout << " ";
cout << " ";
}
cout << endl;
}
//system("pause");
return 0;
}
本文介绍了一种文本处理算法,该算法能够将输入的多行文本中的单词按列对齐输出,通过记录每列单词的最大长度并进行空格填充实现。使用了C++语言和vector容器、stringstream来简化字符串处理过程。
584

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



