华为在线编程系列-字符串分割
2017-04-03 10:53
246 查看
题目描述:
* 连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;(连续输入字符串(输入2次,每个字符串长度小于100))
* 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入输出示例:
* 输入:
* 输出:
解题思路:首先定义两个方法(分割字符串和后面补0),如果用户输入的字符串的长度是大于8,则用一个下标标志index来决定分割的头尾,对字符串每隔8个字符进行分割,这一段子串直接输出。分割完剩余的不足8个字符的尾进行补0;如果用户输入的字符串长度小于8,那就直接补0,然后输出;
一开始我想的是,创建一个有序链表LinkedList来将每个分割补0后的字符串都存起来。但是运行时,超出了内存限制。题目只是要求将字符串输出,那我可以不用存储了,直接将分割或者补0的字符串输出即可
代码:
另一种思路:如果字符串的长度不是8的整数倍,则先补0,使其长度为8的整数倍,之后再对字符串进行每隔8个字符进行截取
* 连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;(连续输入字符串(输入2次,每个字符串长度小于100))
* 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
输入输出示例:
* 输入:
abc 123456789
* 输出:
abc00000 12345678 90000000
解题思路:首先定义两个方法(分割字符串和后面补0),如果用户输入的字符串的长度是大于8,则用一个下标标志index来决定分割的头尾,对字符串每隔8个字符进行分割,这一段子串直接输出。分割完剩余的不足8个字符的尾进行补0;如果用户输入的字符串长度小于8,那就直接补0,然后输出;
一开始我想的是,创建一个有序链表LinkedList来将每个分割补0后的字符串都存起来。但是运行时,超出了内存限制。题目只是要求将字符串输出,那我可以不用存储了,直接将分割或者补0的字符串输出即可
代码:
import java.util.*; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); String s1 = scan.nextLine(); String s2 = scan.nextLine(); //LinkedList<String> result = new LinkedList<String>(); if(s1 != null && !s1.equals("")){ addToList(s1); } if(s1 != null && !s2.equals("")){ addToList(s2); } } private static void addToList(String str){ int len = str.length(); // int len2 = s2.length(); int index =0; if(len > 8){ while(index + 8 <= len){ //result.add(str.substring(index,index+8)); System.out.println(str.substring(index,index+8)); index = index + 8; } if(len > index){ //result.add(appendZero(str.substring(index,len))); System.out.println(appendZero(str.substring(index,len))); 4000 } }else{ System.out.println(appendZero(str)); } } private static String appendZero(String string){ while(string.length() != 8){ string += "0"; } return string; } }
另一种思路:如果字符串的长度不是8的整数倍,则先补0,使其长度为8的整数倍,之后再对字符串进行每隔8个字符进行截取
来源:牛客网 import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String s = new String(sc.nextLine()); if(s.length()%8 !=0 ) s = s + "00000000"; while(s.length()>=8){ System.out.println(s.substring(0, 8)); s = s.substring(8); } } } }
相关文章推荐
- 华为在线编程系列-字符串排序
- 华为在线编程系列-删除字符串中出现次数最少的字符
- 华为OJ_1960_字符串分割
- 判断字符串是否能分割成字典中的单词(二)——Leetcode系列(十二)
- 华为机试题:字符串分割
- 华为在线编程系列-提取不重复的整数
- 华为在线编程系列-最小公倍数
- 【python系列】Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 华为在线编程系列-数据分类处理
- 华为oj之字符串分割
- 2016华为机试题:字符串按指定长度分割
- 【华为oj】字符串分割
- 华为oj 字符串分割
- 华为机试题: 将数组中的字符串按指定长度重新分割(java)
- 华为校招2016.09机试 第1题: 字符串按指定长度重新分割
- 判断字符串是否能分割成字典中的单词(一)——Leetcode系列(十一)
- 华为机试题: 字符串分割
- 【华为 OJ】 字符串分割
- 华为在线编程系列-坐标移动
- 华为在线编程系列-合唱队(动态规划的应用)