华为机试-字符串分隔(较难)

字符串分隔

http://www.nowcoder.com/questionTerminal/d9162298cb5a437aad722fccccaae8a7

题目描述

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

方法1:

每次读取s前8个字符,然后其余部分重新复制给s,当小于等于8时结束(设标志flag=true)。

int main(){
    string s;
    while(cin>>s)
    {
        bool flag=false;//标志是否结束
        while(!flag)
        {
            int len=s.length();
            if(len<8){
                cout<<s.append(8-len,'0')<<endl;//追加 str.append(个数,字符)
                flag=true;}
            else if(len==8){
                cout<<s<<endl;
                flag=true;}
            else{
                cout<<s.substr(0,8)<<endl;//截取 str.substr(开始,个数)
                s=s.substr(8);}
        }
    }
    return 0;
}

方法2:

大于8时截断+重新赋值,直到不满足时说明<=8,resize解决。

while(cin>>s)
    {
        while(s.length()>8)
        {
            cout<<s.substr(0,8)<<endl;
            s=s.substr(8);
        }
        s.resize(8,'0');//str.resize(长度,不满足时的填充字符)
        cout<<s<<endl;
    }

resize() 调整字符串的大小。如果字符串长度变小,多余的字符会被截掉。若长度变大,可以设置填充的字符。

全部评论

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
评论
1
9
分享
牛客网
牛客企业服务