UVA1593 代码对齐 Alignment of Code

题目描述

输入若干行代码,要求各列单词的左边界对齐且尽量靠左。

单词之间至少要空一格。每个单词不超过80个字符,

每行不超过180个字符,一共最多1000行。

注意输出时每行的最后一列后面没有空格符。

思路:使用一个二维vector来存储数据(因为列数未知),再建一个数组来存储每列单词长度的最大值.然后对每一行进行遍历然后输出,注意下输出格式,每个单词之间至少有一个空格,最后一列除外.
以前的题目好多都没结束条件,自己在测试时可以加下.

参考代码
#include<bits/stdc++.h>
using namespace std;
vector<string> txt[1000 + 10];//存放每行的字符串
int max_len[180 + 10];//存放每列最大的字符长度
string str,str2;
int row, col;//存放行/列
void print(string s, int len) {
	cout << s;
	for (int i = 0; i <= len - s.size(); i++) {
		cout << " ";
	}
}
int main()
{
	while (getline(cin, str)) {
		col = 0;
		stringstream sm(str);
		while (sm >> str2) {//将一行中的单词放到vector中.  可以stringstream当成cin.
			/*txt[row++][col] = str2;*/  //vector当空间为空时,不能直接用下标赋值.最好使用push_back方法
			txt[row].push_back(str2);
			max_len[col] = max(max_len[col], (int)str2.size());//这里为啥这样呢???
			col++;
		}
		row++;
	}
	for (int i = 0; i < row; i++) {//对每行数据进行输出
		int j = 0;
		for ( ; j < txt[i].size()-1; j++) {
			print(txt[i][j], max_len[j]);
		}
		cout << txt[i][j] << endl;
		
	}
	return 0;
	
}
/*  测试数据
  start:  integer;    // begins here
stop: integer; //  ends here
 s:  string
c:   char; // temp
haha  //以前的
*/
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值