我有这段代码,但是看起来很笨拙。在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);
如果需要的话,这将有助于通过循环优化更快地执行。