从列表中按字母顺序排列单个字符串 - Java

时间:2013-06-12 16:16:00

标签: java string algorithm char

我想读一个单词列表。然后我想要对每个单词中的每个字符进行字母顺序排列,以便我有一个完整的单词列表,其中每个字母都按字母顺序排列。例如,如果我想从文本文件中读取“cat”“dog”“mouse”,我将[a,c,t],[d,g,o]和[e,m,o,s, ü]。

我在Java中实现它。我想过链接列表或其他一些Collection,但我不确定如何实现这些。我知道这并不像将每个字符串转换为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);
    }

2 个答案:

答案 0 :(得分:7)

如果您有一个名为String的{​​{1}},则可以通过Arrays.sort

获取word中已排序的char[]个字符
word

我假设你想为一组单词的每个成员重复这个过程。

如果您有兴趣了解幕后发生的事情,我建议您查看source

答案 1 :(得分:1)

Java已经为排序提供了很好的支持:您只需要将String转换为char[]数组,在其上调用Arrays.sort,然后将该数组转换回{{ 1}}。

但是,如果你想对算法有一些乐趣,你可以尝试使用线性counting sort:计算原始字母,然后按字母顺序查看计数,然后写出{{ 1}}字符数。