您的位置:首页 > 其它

华为机试——字符串分隔

2017-07-22 18:13 471 查看

题目描述

•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;

•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

连续输入字符串(输入2次,每个字符串长度小于100)

输出描述:

输出到长度为8的新字符串数组

示例1

输入

abc
123456789


输出

abc00000
12345678
90000000


思路:分两种情况,s的长度大于8和小于等于8,大于8先取前8个,放入res,s更新,len更新;小于等于8的话,尾部加0,放入res,具体见注释~

代码:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

void output(string s){
vector<string> res;//保存结果
int len = s.length();
string zero="0000000";//用来尾部加0,最多加7个0
while (1){
if (len <= 8){//如果长度小于等于8
string tmp1(zero, 0, 8-len);//尾部要加8-len个0,通过tmp1(string 初始化)
s += tmp1;//0加到s后面
res.push_back(s);
break;//结束循环
}
string tmp2(s, 0, 8);//如果长度大于8,通过s2取出s的前8个
res.push_back(tmp2);
string tmp3(s, 8, len - 8);
s = tmp3;//更新s和len值
len = s.length();
}
for (vector<string>::iterator iter = res.begin(); iter != res.end(); ++iter){//输出结果
cout << *iter << endl;
}
}

int main(){
string s1, s2;
cin >> s1;//所谓的连续输入
cin >> s2;
output(s1);
output(s2);

return 0;
}


结果: 运行时间: 2 ms 占用内存:220K 状态:答案正确
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: