Возвращаем true, если данная строка содержит внешний вид "xyz", где xyz непосредственно не предшествует периоду (.). Так что "xxyz" считается, но "x.xyz" этого не делает.
Я пытаюсь решить эту проблему и не могу найти, почему "abc.xyzxyz" все еще возвращает false
public boolean xyzThere(String str) {
if(str.contains("xyz")) {
int xyz = str.indexOf("xyz");
if(xyz!=0 && str.substring(xyz-1,xyz).equals(".")) {
return false;
}
return true;
}
return false;
}
Он возвращает false, потому что этот оператор, if(xyz!=0 && str.substring(xyz-1,xyz).equals(".")) {
Истинно.
xyz равно 4, а str.substring(3, 4)
- ".".
&&
, вот и все. Но вы должны экспериментировать и попытаться понять это самостоятельно.
В Python будет работать следующий код:
def xyz_there(str):
if len(str) < 3:
return False
for i in range(len(str)):
if str[i-1]!= '.':
if str[i:i+3]=='xyz' :
return True
else:
return False