优化时间复杂度 - Quinn McClusky

时间:2017-10-09 17:25:39

标签: algorithm complexity-theory

我实现了Quinn McClusky逻辑最小化,现在尝试优化这段代码:

public int[] differsMaxOneChar(String a, String b) {
    debug.println("Comparing " + a + " to " + b);
    int[] returnValue = {1, 0};
    boolean differs = false;
    for (int i = 0; i < a.length(); i++) {
        if (!(a.charAt(i) == b.charAt(i))) {
            if (differs) {
                returnValue[0] = 0;
                break;
            } else {
                differs = true;
                returnValue[1] = i;
            }
        }
    }
    return returnValue;
}

非常感谢任何帮助。

字符串a和b的长度始终相同。方法检查它们是否在一个位置上不同。 a和b由&#39; 0,&#39; 1&#39;组成。和&#39; X&#39;。没别了。

1 个答案:

答案 0 :(得分:0)

就时间复杂度而言,你已经达到了O(n),这对于这个问题来说是尽可能好的。 您可以优化的只有很小的方式(不影响O复杂性),例如将a的长度存储为变量(而不是在每次迭代时重新计算它。)

此外,您的功能名称建议您检查它是否至少与一个字符不同,但在您的描述中,您会说“完全一个”位置。你正试图做什么?