字符串算法系列

给一个字符串,找出字符串里面连续的数字

           //字符串例子
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 }

 总结:注意边界条件的判断。

posted @ 2018-03-28 10:01  唾手可得的树  阅读(338)  评论(0编辑  收藏  举报