我有这段代码,但是看起来很笨拙。在Java中还有更规范的方法吗?

public boolean oneDiff(String from, String s) {
    if (from.length()!=s.length()) return false;
    int differences = 0;
    for (int charIndex = 0;charIndex<from.length();charIndex++) {
        if (from.charAt(charIndex)!=s.charAt(charIndex)) differences++;
    }
    return (differences==1);
}

最佳答案

我同意@mk。但是,为了最大程度地减少循环执行,您不应该在字符串结束之前运行循环。相反,您可以在差值大于1时立即中断循环。像这样:


for (int charIndex = 0;charIndex<from.length();charIndex++) {
        if (from.charAt(charIndex)!=s.charAt(charIndex)) differences++;
        if(differences > 1) break;
    }
    return (differences==1);



如果需要的话,这将有助于通过循环优化更快地执行。

10-06 05:46