字符串算法系列
给一个字符串,找出字符串里面连续的数字
//字符串例子
1 String str3 = "aaa123ccc345ddd135";
//转化为char数组 2 char[] charsArr = str3.toCharArray(); 3 List<Integer> list = new ArrayList<>();
//遍历char数组 4 for (int i = 0; i < charsArr.length; i++) {
//如果是数字 5 if (Character.isDigit(charsArr[i])) {
//如果集合大小大于0 6 if (list.size() > 0) {
//当前数字比之前数字大1 7 if ((Integer.parseInt(String.valueOf(charsArr[i])) - list.get(list.size() - 1)) == 1) {
//添加到集合里面 8 list.add(Integer.parseInt(String.valueOf(charsArr[i]))); 9 } 10 } else {
//新的匹配开始,添加第一个数字 11 list.add(Integer.parseInt(String.valueOf(charsArr[i]))); 12 } 13 } else {
//遇到非数字,并且之前的连续数字只有一个时,集合清空 14 if (list.size() == 1) { 15 list.clear(); 16 } else if (list.size() > 1) {
//遇到非数字,并且之前的连续数字大于一个时,先打印集合的元素,然后集合清空 17 LOGGER.info("list is "+list); 18 list.clear(); 19 } 20 } 21 }
//如果遍历结束,集合还有元素,打印集合的元素 22 if (list.size() > 1) { 23 LOGGER.info("last list is " + list); 24 }
总结:注意边界条件的判断。