1

Java 7より前のバージョンでは、次のことを簡単に実行できました。

public static String[] suffixes(String s)
{
    int N = s.length();
    String[] suffixes = new String[N];
    for (int i = 0; i < N; i++)
    suffixes[i] = s.substring(i, N);
    return suffixes;
}

ただし、Java 7 では、substring メソッドは新しい文字列を返します。したがって、消費されるスペースO(n^2)n、文字列の長さです。

Java 7以降のバージョンで同じことを行うための迅速かつ簡単な方法はありますか?

4

2 に答える 2

1

「接尾辞配列」を表す抽象データ型を作成できます。

  • 文字列で初期化
  • 受け取った文字列を保存し、それ以外は何も保存しません
  • 必要に応じてアクセサ メソッドを提供します。次に例を示します。
    • size()
    • get(int n)- n 番目の要素を返す
    • equals(int n, String s)- n 番目の要素を入力と比較する
    • ...

この構造に期待する機能によっては、基になる文字列を としてchar[]、またはその両方として、別の形式で格納することが理にかなっている場合があります。それは実装の詳細であり、カプセル化され、ADT のユーザーから隠されます。を作成することから始め、interfaceサポートする必要があるメソッドを定義します。

于 2015-10-02T16:44:33.967 に答える