-3

我正在编写代码来查看给定字符串的中间是否有 xyz。如果 xyz 出现一次,则此方法有效,但当它出现多次时,它并不总是有效。

public boolean xyzMiddle(String str) {
  if (str.length() <= 2) {
    return false;
  }
  int count1 = 0;
  int count2 = 0;
  for (int i=(str.length()-2)/2; i<str.length()-2; i++) {
    if (str.substring(i, i+3).equals("xyz")) {
      count1 = str.substring(0, i).length();
      count2 = str.substring(i+3).length();
    }
  }
  if (count1 == count2 || count1+1 == count2 || count2+1 == count1) {
    return true;
  }
  return false;
}
4

3 回答 3

1

这将起作用:

int middle = (str.length() - 2) / 2;
return "xyz".equals(str.substring(middle, middle + 3));

如果 的长度str是偶数,则可能前xyz比后多一个字母。如果您希望它在之后而不是之前,则必须减去三而不是二。如果你想完全禁止这个,你首先需要if检查字符串的长度。

于 2013-03-17T15:31:43.813 回答
0

第 1 步:查看Java SE 6 api 文档
第 2 步:阅读 String 上的条目。
第 3 步:试试这个: String.split("xyz");

于 2013-03-17T15:11:39.230 回答
0

你的方法过于复杂……你应该使用String.split("xyz"),然后检查返回数组的大小,如果是2,检查两个部分是否相等:

public boolean xyzMiddle(String str) {
  String[] temp = str.split("xyz");
  return temp.length == 2 ? temp[0].length == temp[1].length : false;
}
于 2013-03-17T15:13:25.143 回答