Java中统计数字和字符串奇偶位数的高效方法有哪些

来源:前端技术作者:新加坡程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《Java中统计数字和字符串奇偶位数的高效方法有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Java中统计数字和字符串奇偶位数的高效方法有哪些》有用,将其分享出去将是对创作者最好的鼓励。

Java中处理数字和字符串的奇偶位数统计需求时,需要根据数据类型选择对应的实现逻辑,不同类型的输入有不同的高效处理方案。

Java中统计数字和字符串奇偶位数的高效方法有哪些

数字类型的奇偶位数统计

对于整数类型的数字,奇偶位数指的是数字从右往左数,第1位、第3位等奇数位置,以及第2位、第4位等偶数位置的位数统计。高效的处理方式是通过取模运算逐位拆分数字,同时记录当前位数位置。

实现思路

  • 初始化奇数位计数器和偶数位计数器,初始值都为0
  • 用位置变量记录当前处理的是第几位,从1开始计数
  • 循环取数字的最后一位,判断当前位置是奇数还是偶数,对应计数器加1
  • 将数字除以10去掉最后一位,位置变量加1,直到数字变为0

代码示例

public class NumberOddEvenDigitCounter {
    public static int[] countNumberOddEvenDigits(int num) {
        // 处理负数的情况,取绝对值
        int target = Math.abs(num);
        int oddCount = 0;
        int evenCount = 0;
        int position = 1;
        // 循环拆分每一位数字
        while (target > 0) {
            int currentDigit = target % 10;
            if (position % 2 == 1) {
                oddCount++;
            } else {
                evenCount++;
            }
            target = target / 10;
            position++;
        }
        return new int[]{oddCount, evenCount};
    }

    public static void main(String[] args) {
        int testNum = 123456;
        int[] result = countNumberOddEvenDigits(testNum);
        System.out.println("数字" + testNum + "的奇数位数:" + result[0]);
        System.out.println("数字" + testNum + "的偶数位数:" + result[1]);
    }
}

上述代码的时间复杂度为O(k),k是数字的位数,空间复杂度为O(1),是最优的实现方式。

字符串类型的奇偶位数统计

字符串的奇偶位数通常指字符串索引的奇偶位置,Java中字符串索引从0开始,因此奇数索引对应第2位、第4位等,偶数索引对应第1位、第3位等,需要根据需求调整判断逻辑。

实现思路

  • 获取字符串的长度,初始化两个计数器
  • 遍历字符串的每个字符,通过索引判断当前位置是奇数还是偶数
  • 对应计数器加1,遍历完成后返回结果

代码示例

public class StringOddEvenCharCounter {
    public static int[] countStringOddEvenPositions(String str) {
        if (str == null || str.isEmpty()) {
            return new int[]{0, 0};
        }
        int oddIndexCount = 0;
        int evenIndexCount = 0;
        // 字符串索引从0开始,0是偶数索引,1是奇数索引
        for (int i = 0; i < str.length(); i++) {
            if (i % 2 == 0) {
                evenIndexCount++;
            } else {
                oddIndexCount++;
            }
        }
        return new int[]{oddIndexCount, evenIndexCount};
    }

    public static void main(String[] args) {
        String testStr = "abcdef";
        int[] result = countStringOddEvenPositions(testStr);
        System.out.println("字符串" + testStr + "的奇数索引位置字符数:" + result[0]);
        System.out.println("字符串" + testStr + "的偶数索引位置字符数:" + result[1]);
    }
}

如果需要按照日常习惯从1开始计数位置,只需要将判断条件改为(i+1)%2==1即可,代码改动很小。

两种场景的效率对比

下面通过表格对比两种统计方式的特性:

统计场景时间复杂度空间复杂度适用输入类型
数字奇偶位数统计O(k),k为数字位数O(1)int、long等整数类型
字符串奇偶位数统计O(n),n为字符串长度O(1)String类型

两种实现都是线性时间复杂度,已经是最高效的实现方式,不需要额外的复杂操作。

注意事项

  • 数字统计时需要处理负数的情况,直接取绝对值即可,不影响位数统计结果
  • 字符串统计时如果输入为null或者空字符串,需要提前做判空处理,避免空指针异常
  • 索引计数的起始值需要和实际需求对齐,避免位置判断错误
实际开发中可以根据具体的业务需求调整计数逻辑,比如只统计数字字符的奇偶位数,只需要在遍历时增加字符类型的判断即可。

Java奇偶位数统计字符串处理数字处理修改时间:2026-06-11 05:21:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。