【问题标题】:Alphabetize individual strings from list - Java按字母顺序排列列表中的单个字符串 - Java
【发布时间】:2013-06-08 20:33:51
【问题描述】:

我想阅读一个单词列表。然后我想按字母顺序排列每个单词中的每个字符,这样我就有了一个完整的单词列表,其中每个字母都按字母顺序排列。例如,如果我想从文本文件中读取“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);
    }

【问题讨论】:

  • 您打算如何使用该集合?搜索特定单词的字母?只输出整个列表?按顺序排列?原始单词的字母顺序?等等。最佳解决方案取决于许多因素。
  • 为什么不包含一些您尝试过的代码。您表示您尝试将单词分解为 char 数组,但没有成功。事实上,这样做是有可能的。向我们展示您是如何尝试的。
  • @greedybuddha 是的,我想对字母进行排序。我有点想这将是一个数组列表 - 或类似的东西 - 我最终会与另一个列表进行比较。
  • @EricWich 我已经包含了一些代码。现在真的很简单。这是一个字谜求解器的开始。有很多关于字谜的好帖子。有人提到了这种方法。我想我会试试看。
  • 您应该意识到“A”和“a”具有不同的词法值。你想保留大写吗?如果一个单词中有重复的字母怎么办?如果您正在字谜,您可能希望将所有内容小写并保留重复的字母

标签: java string algorithm char


【解决方案1】:

如果您有一个名为wordString,您可以通过Arrays.sort 获得word 中字符的排序char[]

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

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

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

【讨论】:

  • 是的,没错。基本上我正在从字典文件中读取单词,并且我想按字母顺序排列每个单词的字母。我正在尝试制作一个字谜求解器。我读了另一个非常好的帖子,它推荐了这个过程。以为我会试一试。我以前的方法是使用所有排列 - 这似乎非常低效。
【解决方案2】:

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

但是,如果您想从算法中获得一些乐趣,您可以尝试使用线性 counting sort:计算原始字母中的字母,然后按字母顺序进行计数,然后写出 count 数字字符数。

【讨论】:

  • 这听起来很有趣。我会调查一下。谢谢。
猜你喜欢
  • 2013-05-14
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2021-07-05
相关资源
最近更新 更多