发生简单的问题。不知道为什么它不起作用?截图。
答案 0 :(得分:0)
因此,您需要采取以下措施:
public static boolean xyzThere(String s) {
return !s.contains(".xyz") && s.contains("xyz");
}
然后将其分解。
对于初学者来说,仅仅说字符串是否包含xyz是不够的,因为(在失败的测试用例中)在字符串中可能有很多xyz实例。
所以您需要弄清楚逻辑是什么。
表达它的一种方式是说:
我们总是失败除非至少有一个序列xyz既不是.xyz
所以也许我们正在寻找一个循环。
public static boolean xyzThere(String str) {
boolean result = false;
String s = str;
int n = s.indexOf("xyz");
while(n >= 0) {
// if n is 0 then there was no preceeding dot so we win
if (n == 0) { return true; }
// if the immediately preceedding character was not a '.' return true
char c = s.charAt(n-1);
if (c != '.') { return true; }
// otherwise keep looking until no more instances of "xyz" in the string
s = s.substring(n + 3);
n = s.indexOf("xyz");
}
return result;
}