字符串对齐
同济大学机试题
题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
给你多个字符串,要求你将所有字符串按照某个字母对齐。
输入输出格式
输入描述:
第一行输入一个n(n < 100) 接下来输入n行字符串 最后输入一个对齐字母
输出描述:
按题意要求输出
输入输出样例
输入样例#:
3 xyz asdaxais agcdbegxfgf x
输出样例#:
_______xyz ___asdaxais agcdbegxfgf
解题方法
思路
找到目标字符的的最大下标位置,其它位置比其小的按照差值输出“_”,再输出该字符串
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(cin>>n){
vector<string> v(n);
int maxIndex=0;
for(int i=0;i<n;i++){
cin>>v[i];
}
char c;
cin>>c;
for(int i=0;i<n;i++){
int tmp = v[i].find(c);
maxIndex = max(tmp,maxIndex);
}
for(int i=0;i<n;i++){
int tmp = v[i].find(c);
if(tmp!=maxIndex){
int sub = maxIndex-tmp;
for(int j=0;j<sub;j++){
cout<<"_";
}
cout<<v[i]<<endl;
}else{
cout<<v[i]<<endl;
}
}
}
return 0;
}