1

私は文字列の逆について読んでいます:

最初のコード:

public static String reverse(String s) {
  String rev = "";
  for (int i = s.length() - 1; i >= 0; i--)
     rev += s.charAt(i);
  return rev;
}

2 番目のコード:

public static String reverse(String s) {
   StringBuilder rev = new StringBuilder();
   for (int i = s.length() - 1; i >= 0; i--)
      rev.append(s.charAt(i));
   return rev.toString();
}

文字列を使用すると二次時間が得られ、文字列ビルダーを使用すると線形時間が得られることが言及されています。

そして、9 ページの文字列を使用した接尾辞の配列については、こちらの方が優れています。

上記の両方のケースで著者がこれをどのように結論付けたかわかりません。

誰でもここで私を助けてもらえますか?

4

2 に答える 2

0

最初のコードでは:

public static String reverse(String s) {
   String rev = "";
   for(int i = s.length() - 1; i >= 0; i--)
      rev += s.charAt(i);
   return rev;
}

を行うたびrev += s.charAt(i);に、 aStringBuilderが作成され、の内容revが追加され、次にs.charAt(i)追加され、次にStringStringBuilderに変換されます。それはs と同じ量の文字列になります。s.length() - 1 StringBuilder

2 番目のバージョンでは:

public static String reverse(String s) {
   StringBuilder rev = new StringBuilder();
   for(int i = s.length() - 1; i >= 0; i--)
      rev.append(s.charAt(i));
   return rev.toString();
}

StringBuilder単一および単一の文字列のみがあります。

2 番目の混乱について、これについて詳しく説明していただけますか。作者が何を言いたいのかわかりにくい。

于 2013-11-06T07:38:16.320 に答える
0

クラス「java.lang.StringBuffer」にはメソッド「reverse」が含まれており、自己記述コードの代わりに使用できます。

于 2013-11-06T08:43:01.443 に答える