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

7

如果你有一个String被调用的,你可以在viaword中获得一个排序char[]的字符wordArrays.sort

char[] chars = word.toCharArray();
Arrays.sort(chars);

我假设您希望对单词集合的每个成员重复此过程。

如果您有兴趣了解幕后发生的事情,我会敦促您查看源代码

于 2013-06-12T16:18:36.213 回答
1

Java provides good support for sorting already: all you need is converting your String to an array of char[], call Arrays.sort on it, and then convert that array back to String.

If you want to have some fun with algorithms, however, you could try going for a linear counting sort: count the letters in the original, then go through the counts in alphabetical order, and write out the count number of characters.

于 2013-06-12T16:19:02.073 回答