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

如何编写函数实现field列内所有字符相同时返回true的功能

问题解答

现有代码问题

  • 逻辑错误:field[i][j] == field[i][j]是元素自身对比,结果永远为true,进入循环后第一时间就会返回true,完全没有完成列元素一致性校验的作用
  • 循环逻辑不符合需求:当前循环顺序是逐行逐列遍历,且第一次判断就直接return,既没有按列做对比,也没有遍历完整的列内容

优化实现

默认按「判断指定列所有元素是否完全相同」实现,如果需要判断所有列都满足所有元素相同,可在外层加列遍历循环即可。

  • 以上实现的时间复杂度为O(n)(n为二维数组元素总个数),不需要多余的空间开销,满足常规场景的性能要求。

判断指定列全相同的代码

// 入参说明:field是二维字符数组,targetColumn是要校验的列索引
public boolean isColumnAllSame(char[][] field, int targetColumn) {
    // 边界校验:数组为空、目标列超出范围直接返回false
    if (field == null || field.length == 0 || targetColumn < 0 || targetColumn >= field[0].length) {
        return false;
    }
    // 取目标列第一个元素作为基准
    char base = field[0][targetColumn];
    // 遍历目标列的所有行
    for (int i = 1; i < field.length; i++) {
        if (field[i][targetColumn] != base) {
            // 有一个元素不一致直接返回false
            return false;
        }
    }
    // 遍历完成没有不一致项,返回true
    return true;
}

判断是否存在任意一列全相同的代码

public boolean hasAnySameColumn(char[][] field) {
    if (field == null || field.length == 0 || field[0].length == 0) {
        return false;
    }
    int columns = field[0].length;
    // 遍历所有列
    for (int j = 0; j < columns; j++) {
        char base = field[0][j];
        boolean isSame = true;
        for (int i = 1; i < field.length; i++) {
            if (field[i][j] != base) {
                isSame = false;
                break;
            }
        }
        if (isSame) {
            return true;
        }
    }
    return false;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:06:08