-3

指定された文字列の途中にxyzがあるかどうかを確認するコードを書いています。これは、xyzが1回出現する場合は機能しますが、複数回出現する場合は常に機能するとは限りません。

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より前に1文字多い可能性があります。前ではなく後にしたい場合は、2ではなく3を引く必要があります。これを完全に禁止したい場合は、最初ifに文字列の長さをチェックする必要があります。

于 2013-03-17T15:31:43.813 に答える
0

ステップ1:Java SE6apiドキュメントを確認してください。
ステップ2:文字列のエントリを読み取ります。
ステップ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 に答える