3

単語リストで読みたい。次に、各単語内の各文字をアルファベット順に並べて、各文字がアルファベット順に並べられた単語のリスト全体を作成します。たとえば、テキスト ファイルから「cat」「dog」「mouse」を読み込みたい場合、[a,c,t]、[d,g,o]、および [e,m,o,s,あなた]。

これをJavaで実装しています。リンクされたリストまたはその他のコレクションについて考えましたが、これに関してそれらを実装する方法がよくわかりません。各文字列を char 配列に変換したり、配列リストを使用したりするほど単純ではないことはわかっています。(私はすでにそれらを試しました)

これを行うための提案や例はありますか?

基本的に、私はアルゴリズムを改善しようとしているだけです。

 public class AnagramSolver1 {

static List<String> inputList = new ArrayList<String>();

public static void main(String[] args) throws IOException {

    List<String> dictionary = new ArrayList<String>();
    BufferedReader in = new BufferedReader(new FileReader("src/dictionary.txt"));
    String line = null;
    Scanner scan = new Scanner(System.in);

    while (null!=(line=in.readLine()))
    {
       dictionary.add(line);
    }
    in.close();

    char[] word;


    for (int i = 0; i < dictionary.size(); i++) {
        word = inputList.get(i).toCharArray();
        System.out.println(word);
    }
4

2 に答える 2

1

Java は既にソートの優れたサポートを提供しStringていchar[]ます。Arrays.sortString

ただし、アルゴリズムを楽しみたい場合は、線形カウントソートcountを試すことができます。元の文字を数え、アルファベット順に数え、文字数を書き出します。

于 2013-06-12T16:19:02.073 に答える