华为OJ-004

字符串分隔

Posted by Shaun on April 10, 2018

题目描述

•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

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

输出描述:

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

示例1

输入

abc
123456789

输出

abc00000
12345678
90000000

算法实现

实现1
//思路1:判断长度是否是8的倍数,之后不断截取前8位子串
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
    string str;
    while(cin>>str){
        if(str.size()%8!=0)
            str+="00000000";
        while(str.size()>=8){
            cout<<str.substr(0,8)<<endl;
            str=str.substr(8);
        }
    }
    return 0;
}

小结

字符串的操作尽量使用字符串的库函数来做,比如截取子串。

此外,末尾补0的思路非常巧妙:

若字符串长度不是8的倍数,加8个0,从前往后不断截取,当剩下的子串长度不足8位时,肯定都是0。