华为机考题 004字符串分割
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机考题 004字符串分割相关的知识,希望对你有一定的参考价值。
转自:http://blog.csdn.net/sxl_545/article/details/52412203
华为机考题 004字符串分割
分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
题目描述
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入描述:
连续输入字符串(输入2次,每个字符串长度小于100)
输出描述:
输出到长度为8的新字符串数组
输入例子:
abc 123456789
输出例子:
abc00000 12345678 90000000
- #include<iostream>
- #include<string> //注意:是string,不是string.h
- using namespace std;
- int main()
- {
- string str1,str2;
- getline(cin,str1);
- getline(cin,str2);
- int len1=str1.length();//获取字符串长度
- if(0!=len1%8)//第一种情况:字符串的长度不是8的整数倍,需要先补0,再分割
- {
- str1.resize(len1+8-len1%8,‘0‘);//将不足的部分加上0,resize函数原型void resize(int len,char c),把当前字符串的大小置为n,并用字符c填充不足的部分
- for (int i=0;i<str1.length()/8;i++)
- {
- cout<<str1.substr(i*8,8)<<endl;//substr的函数原型string substr(int pos,int n)const;返回从pos开始的n个字符组成的子串。
- }
- }
- else if (0==len1)//第二种情况:字符串为空,不做处理,直接输出
- {
- cout<<str1;
- }
- else<span style="white-space:pre"> </span>//第三种情况:字符串的长度为8的整数倍,分割之后输出
- {
- for (int i=0;i<str1.length()/8;i++)
- {
- cout<<str1.substr(i*8,8)<<endl;
- }
- }
- int len2=str2.length();
- if(0!=len2%8)
- {
- str2.resize(len2+8-len2%8,‘0‘);
- for (int i=0;i<str2.length()/8;i++)
- {
- cout<<str2.substr(i*8,8)<<endl;
- }
- }
- else if(0==len2)
- {
- cout<<str2;
- }
- else
- {
- for (int i=0;i<str2.length()/8;i++)
- {
- cout<<str2.substr(i*8,8)<<endl;
- }
- }
- return 0;
- }
这个程序让我熟悉了string类的使用。
参考博客:
http://blog.csdn.net/yzl_rex/article/details/7839379
这篇博客详细介绍了string类的常用函数,并且附带程序。
以上是关于华为机考题 004字符串分割的主要内容,如果未能解决你的问题,请参考以下文章
华为OD机试 -字符串分割(Java) | 机试题+算法思路+考点+代码解析 2023
华为OD机试 -字符串分割(Java) | 机试题+算法思路+考点+代码解析 2023