【发布时间】: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