You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java面试题求助:如何判断字符串字母顺序并输出异常字符索引

字符串字母顺序检查问题解决方案

题目要求

编写算法检查字符串是否按字母顺序排列:

  • 若字符串符合字母顺序,输出0;
  • 若不符合,输出首个违反顺序的字符索引。

现有代码的问题

你当前的代码通过将字符串转成字符数组排序后对比的方式,只能判断字符串是否有序,但无法定位首个不符合顺序的索引,且不符合要求的输出格式。此外,排序对比的时间复杂度为O(n log n),效率不如直接遍历相邻字符的O(n)方法。

修改后的实现代码

public class AlphabetOrderChecker {
    // 方法返回首个不符合顺序的索引,符合则返回0
    static int checkAlphabetOrder(String s) {
        int n = s.length();
        // 从第二个字符开始遍历(索引1)
        for (int i = 1; i < n; i++) {
            // 比较当前字符与前一个字符的ASCII值
            if (s.charAt(i) < s.charAt(i - 1)) {
                // 找到首个不符合的位置,返回当前索引
                return i;
            }
        }
        // 所有字符都符合顺序,返回0
        return 0;
    }

    public static void main(String[] args) {
        String s = "aadbbbcc";
        int result = checkAlphabetOrder(s);
        System.out.println(result);

        // 测试不符合的例子,比如"abdc"
        String testStr = "abdc";
        System.out.println(checkAlphabetOrder(testStr)); // 输出2
    }
}

代码逻辑说明

  • 遍历从索引1开始,因为需要和前一个字符(索引i-1)对比
  • 字符的大小对比基于ASCII值,小写字母a-z的ASCII值是连续递增的,直接用<即可判断是否违反顺序
  • 一旦发现当前字符小于前一个,立即返回当前索引,这就是题目要求的首个不符合顺序的位置
  • 遍历完成后没有发现违规,返回0

内容的提问来源于stack exchange,提问作者Carrera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:10:28