华为机考题 004字符串分割

转自:http://blog.csdn.net/sxl_545/article/details/52412203

华为机考题 004字符串分割

标签: 华为机考刷题

2016-09-02 11:10 46人阅读 评论(0) 收藏 举报

 分类:

华为机考刷题(3) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

题目描述

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

输入描述:

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

输出描述:

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

输入例子:
abc
123456789
输出例子:
abc00000
12345678
90000000

[cpp] view plain copy

  1. #include<iostream>
  2. #include<string>  //注意:是string,不是string.h
  3. using namespace std;
  4. int main()
  5. {
  6. string str1,str2;
  7. getline(cin,str1);
  8. getline(cin,str2);
  9. int len1=str1.length();//获取字符串长度
  10. if(0!=len1%8)//第一种情况:字符串的长度不是8的整数倍,需要先补0,再分割
  11. {
  12. str1.resize(len1+8-len1%8,‘0‘);//将不足的部分加上0,resize函数原型void resize(int len,char c),把当前字符串的大小置为n,并用字符c填充不足的部分
  13. for (int i=0;i<str1.length()/8;i++)
  14. {
  15. cout<<str1.substr(i*8,8)<<endl;//substr的函数原型string substr(int pos,int n)const;返回从pos开始的n个字符组成的子串。
  16. }
  17. }
  18. else if (0==len1)//第二种情况:字符串为空,不做处理,直接输出
  19. {
  20. cout<<str1;
  21. }
  22. else<span style="white-space:pre">    </span>//第三种情况:字符串的长度为8的整数倍,分割之后输出
  23. {
  24. for (int i=0;i<str1.length()/8;i++)
  25. {
  26. cout<<str1.substr(i*8,8)<<endl;
  27. }
  28. }
  29. int len2=str2.length();
  30. if(0!=len2%8)
  31. {
  32. str2.resize(len2+8-len2%8,‘0‘);
  33. for (int i=0;i<str2.length()/8;i++)
  34. {
  35. cout<<str2.substr(i*8,8)<<endl;
  36. }
  37. }
  38. else if(0==len2)
  39. {
  40. cout<<str2;
  41. }
  42. else
  43. {
  44. for (int i=0;i<str2.length()/8;i++)
  45. {
  46. cout<<str2.substr(i*8,8)<<endl;
  47. }
  48. }
  49. return 0;
  50. }

这个程序让我熟悉了string类的使用。

参考博客:

http://blog.csdn.net/yzl_rex/article/details/7839379

这篇博客详细介绍了string类的常用函数,并且附带程序。

时间: 2024-08-01 00:00:40

华为机考题 004字符串分割的相关文章

华为机试测试- 字符串最长的数字串

输入 输入一个字符串. 输出 输出字符串中最长的数字字符串和它的长度. 如果数字字符串为空,则只输出0 如 input: dadfsaf  output:0 样例输入 abcd12345ed125ss123058789 样例输出 123058789,9 import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { p

华为机试—替换字符串中的字母

功能描述:将字符串中的字母全部替换成字母的下一个字母,要是最后一位是z或Z则替换为a或A. *        输入:aBxyZ *        输出:bCyzA #include<iostream> #include<string> #include<cctype> using namespace std; char ml[]="abcdefghijklmnopqrstuvwxyza"; char mu[]="ABCDEFGHIJKLMN

华为机试题之字符串压缩问题

通过键盘输入一串小写字母(a~z)组成的字符串.                     请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,                     并输出压缩后的字符串.                       压缩规则:  1. 仅压缩连续重复出现的字符.比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".               2. 压缩字段的格式为"字符重复的次数+字

华为机试:字符串分隔

题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 示例1 输入 abc 123456789 输出 abc00000 12345678 90000000 Java: 1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public cl

华为机试题目---字符串替换

题目要求:输入一个字符串,然后在输入一个整数,就是替换字符串的次数,然后依次输入需要替换的字符串-- 例如: 输入:abcdefg 3 a->qwe b->s fg->abc 输出:qwescdeabc //字符串替换 #include<iostream> #include<vector> #include<string> #define max 100 using namespace std; void change(char str[],int c

华为机试-计算字符串的相似度

题目描述 对于不同的字符串,我们希望能有办法判断相似程度,我们定义了一套操作方法来把两个不相同的字符串变得相同,具体的操作方法如下: 1 修改一个字符,如把"a"替换为"b". 2 增加一个字符,如把"abdd"变为"aebdd". 3 删除一个字符,如把"travelling"变为"traveling". 比如,对于"abcdefg"和"abcdef&qu

2015华为机试——将字符串中不同字符的个数打印出来

描述: 找出字符串中,不同的字符的个数. 题目类别: 字符串 难度: 初级 运行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 输入一个字符串,'\0'作为字符串结束符. 输出: 输出字符串中不同字符的个数. 样例输入: 122345 样例输出: 5 代码如下: public class dayin_Char { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while

华为机试—给定字符串中找出单词

题目: 在给定字符串中找出单词("单词"由大写字母和小写字母字符构成,其他非字母字符视为单词的间隔,如空格.问号.数字等等:另外单个字母不算单词):找到单词后,按照长度进行降序排序,(排序时如果长度相同,则按出现的顺序进行排列),然后输出到一个新的字符串中:如果某个单词重复出现多次,则只输出一次:如果整个输入的字符串中没有找到单词,请输出空串.输出的单词之间使用一个"空格"隔开,最后一个单词后不加空格. 要求实现函数: void my_word(charinput[

(华为机试)双向链表实现字符串条件表达式的求值

描述: 给定一个以字符串形式表示的算术表达式,计算该表达式的值. 表达式支持如下运算:"+.-.*./",其中"*"和"/"的优先级要高于"+"和"-": 不需要考虑括号,且表达式之间没有空格: 例如:对于表达式"3-2+15*2",该表达式值为31. 运行时间限制: 60 Sec 内存限制: 256 MByte 输入: 加减乘除四则运算表达式,长度不超过1024字节,运算式中不含有括号