Java实现统计字符串中连续数字序列的个数
这问题挺常见的,核心就是要识别连续的数字序列,而非单个数字的个数对吧?给你写个实用的Java实现,逻辑清晰还能覆盖各种边界情况:
解决方案代码
如果是固定输入的场景,实现如下:
public int countNums() { String input = "I have 22 bananas ,121 pencils, and p32 apples"; int count = 0; boolean inNumber = false; for (char c : input.toCharArray()) { // 检查当前字符是否为数字 if (Character.isDigit(c)) { if (!inNumber) { // 从非数字切换到数字,说明新的数字序列开始,计数+1 count++; inNumber = true; } } else { // 遇到非数字,标记退出数字序列 inNumber = false; } } return count; }
如果想让方法更通用(支持任意输入字符串),可以改成带参数的版本,同时处理空值/空字符串的边界情况:
public int countNums(String input) { // 提前处理空输入,避免空指针异常 if (input == null || input.isEmpty()) { return 0; } int count = 0; boolean inNumber = false; for (char c : input.toCharArray()) { if (Character.isDigit(c)) { if (!inNumber) { count++; inNumber = true; } } else { inNumber = false; } } return count; }
逻辑解释
- 用
inNumber这个布尔变量跟踪当前是否处于连续数字序列中,初始状态为false(未进入数字序列) - 遍历字符串的每个字符:
- 遇到数字时,如果之前不在数字序列里,说明触发了一个新的连续数字序列,计数器加1并标记进入数字序列
- 遇到非数字字符时,标记退出数字序列,等待下一个可能的数字序列开始
- 最终返回的计数器值,就是连续数字序列的总个数
测试你的示例输入时,这个方法会返回3,完全符合预期。
内容的提问来源于stack exchange,提问作者user7755336
相关产品推荐
相关产品推荐

