我正在做一些 Java 练习,但我不明白为什么答案不是这个。
for (int i=0;i<str.length()-2;i++) {
if ((str.charAt(i)=='b') && (str.charAt(i+2)=='b')) {
return true; }
else return false;
}
return false;
如果给定的字符串(str)中包含“bob”,则该问题要求返回 true,但中间字符不需要是“o”。上面的代码对于三个字符的字符串返回 true 满足条件的长度,如“bob”或“bbb”,但对于长于该条件的字符串,即“bobdfgkabcb”,则为 false。我确实花了一整天的时间试图解决这个问题和另一个类似的问题,所以我很感激有人告诉我为什么它是错误的。
谢谢。
最佳答案
将代码更改为:
for (int i=0;i<str.length()-2;i++) {
if ((str.charAt(i)=='b') && (str.charAt(i+2)=='b')) {// check 1st and 3rd character, 2nd and 4th character etc
return true; }
}
return false;
或者你可以尝试这样的正则表达式:str.matches(".*b[a-zA-Z]b.*")
关于java - 判断字符串中是否有两个特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26116017/