为了账号安全,请及时绑定邮箱和手机立即绑定

这些解决方案中的哪一个具有更好的风格/性能?

这些解决方案中的哪一个具有更好的风格/性能?

qq_花开花谢_0 2021-11-17 14:45:44
我发现了一个关于 codingBat 的有趣练习,现在我有一个关于解决方案的问题。任务是:给定一个字符串,true如果字符串中的第一个实例x后面紧跟另一个,则返回x。我写的是:boolean doubleX(String str) {      return str.contains("x") ? str.indexOf('x') == str.length() - 1 ? false : str.charAt(str.indexOf('x')) == str.charAt(str.indexOf('x') + 1) : false;}他们在页面上的解决方案是:boolean doubleX(String str) {   int i = str.indexOf("x");   if (i == -1) return false; // no "x" at all   // Is char at i+1 also an "x"?   if (i+1 >= str.length()) return false; // check i+1 in bounds?      return str.substring(i+1, i+2).equals("x");所以现在我的问题是哪个解决方案具有更好的编码风格?哪种解决方案更美观或更高效?谢谢大家的回答
查看完整描述

1 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

我可能会这样编码:


boolean doubleX(String str) 

{

    int index = str.indexOf("x");

    return (index >= 0 && index == str.indexOf("xx", index));

}

可能不是性能最好的,但它可以处理所有可能性。


如果indexOf("x")和indexOf("xx")相距很远(不必要,长时间搜索"xx")或者如果两个索引都非常高(长时间搜索完成两次),它可能会很慢。


因此,另一个不太直观但性能更高的解决方案可能是:


boolean doubleX(String str)

{

    int index = str.indexOf("x");

    return (index >= 0 && index < str.length() - 1 && str.charAt(index + 1) == 'x');

}


查看完整回答
反对 回复 2021-11-17
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信