如何从给定的字母中找到最长的单词。<java> </java>

时间:2013-02-20 17:52:24

标签: java

假设我有

String letters="CATOPHAPY";

我有字典以数组的形式检查。

String[] dict=new String[996];

我怎样才能从字母中构造最长的单词,并在我之前的词典中用词汇进行检查

谢谢

1 个答案:

答案 0 :(得分:5)

  1. 准备一系列字典单词,但每个条目的字母都要排序;
  2. 按字大小排序字典本身,降序;
  3. 按照与字典中相同的顺序对输入字符串中的字母进行排序;
  4. 从上到下浏览字典,找到输入中存在所有字母的第一个条目。由于排序,这可以实现为O(n)。
  5. 广告1,3。

    char[] toSort = original.toCharArray();
    Arrays.sort(toSort);
    String sorted = new String(toSort);
    

    广告2。

    Arrays.sort(dict, (String a, String b) -> b.length() - a.length());
    

    广告4。

    boolean isMatch(String dictWord, String inputWord) {
      for (int i = 0, j = 0; i < dictWord.length();) {
        if (j >= inputWord.length()) return false;
        char d = dictWord.charAt(i), n = inputWord.charAt(j);
        if (d < n) return false;
        if (d >= n) j++;
        if (d == n) i++;
      }
      return true;
    }