PrefixAgainbat中的解决方案

病态码

我目前正在有趣地进行codingbat问题,而我只是解决了这个问题。

“给出一个字符串,请考虑由该字符串的前N个字符组成的前缀字符串。该前缀字符串是否出现在字符串的其他位置?假定该字符串不为空,并且N的范围为1..str.length。 ()。prefixAgain(“ abXYabc”,1)→正确的prefixAgain(“ abXYabc”,2)→正确的prefixAgain(“ abXYabc”,3)→否“ http://codingbat.com/prob/p136417

我的解决方案是:

public boolean prefixAgain(String str, int n) {
    return (str.replaceFirst(Character.toString(str.charAt(n-1)),"").contains(Character.toString(str.charAt(n-1))));
}

现在,我在编写此代码时并没有真正理解问题,我只想使用.contains()方法查找指定索引字符的出现,并忽略该字符。所以我真的没有找到问题所指示的前缀。提交错误后,我才发现自己的错误。但是,此解决方案通过了练习。当我用自己的输入进行测试时,例如

prefixAgain("abcccccbx", 2);

它返回true而不是false。那么,我是否错过了即使完全错误的情况下,Codebat仍然接受我的解决方案的某些原因?

第三代

重述您的策略(算法):字符串中的前N个字符是否出现在字符串中的其他任何地方?最简单的解决方案是在原始字符串的第二个字符到最后一个字符中查找该字符串。如下所示(即使有人给您一个假设,也要经常检查!)

public boolean prefixAgain(String str, int n) {
    boolean result = false;
    if (n < str.length() && 
            (str.substring(1)).indexOf(str.substring(0,n)) > -1
            ) {
        result = true;
    }
    return result;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章