【发布时间】:2023-09-05 06:09:02
【问题描述】:
我正在尝试获取单词:missspelling,并通过在相邻字符之间添加“”(空格)将单词分成两个单词,并且想要获取单词:miss spelling 结果。任何指导都会有所帮助,尝试了不同的代码,但没有看到结果。
适用于其他建议的代码仅供参考。 *请注意,注释掉的代码是我一直在搞乱的尝试并获得正确的结果。
/**
* Returns possible suggestions for misspelled word
*
* @param tree The Trie that will be checked
* @param word The word in trie that is checked
*/
public static void suggest(TrieNode tree, String word) {
Set<String> result = new HashSet<>();
System.out.println("Suggestions: ");
// Remove a character
for (int i = 0; i < word.length(); ++i)
result.add(word.substring(0, i) + word.substring(i + 1));
// Swap two consecutive characters
for (int i = 0; i < word.length() - 1; ++i)
result.add(word.substring(0, i) + word.substring(i + 1, i + 2) + word.substring(i, i + 1)
+ word.substring(i + 2));
// Replace a character with other
for (int i = 0; i < word.length(); ++i)
for (char c = 'a'; c <= 'z'; ++c)
result.add(word.substring(0, i) + String.valueOf(c) + word.substring(i + 1));
// Add a new character
for (int i = 0; i <= word.length(); ++i)
for (char c = 'a'; c <= 'z'; ++c)
result.add(word.substring(0, i) + String.valueOf(c) + word.substring(i));
// Split word into pair of words by adding a " " between adjacent pairs
// Need help here
for (int i = 0; i < word.length(); ++i)
for (char c = ' '; c <= ' '; ++c)
if (search(tree, word.substring(0, i)) && search(tree, word.substring(i)) == true)
result.add(word.substring(0, i) + String.valueOf(c) + word.substring(i));
ArrayList<String> res = new ArrayList<>(result);
int j = 0;
for (int i = 0; i < result.size(); i++)
if (search(tree, res.get(i))) {
if (j == 0)
System.out.print("[");
System.out.print(res.get(i) + ",");
System.out.print("");
j++;
}
System.out.print("]" + "\n");
}
【问题讨论】:
-
我今天在网站上看到了你之前的问题,和这个一模一样。虽然这个措辞更好,但您应该至少等待 48 小时才能重新发布。
-
@BenjaminLowry,好的
-
@BenjaminLowry 我不认为你应该重新发布,这就是 imo 的赏金。如果您可以更好地措辞,您应该编辑原文。
-
好的,你如何确定你想把“拼写错误”这个词分成拼写错误,而不是拼写错误或拼写错误?
-
@GilbertLeBlanc,我想通过在相邻字符之间添加空格然后使用 if 语句检查字典以查看每个拆分单词是否都在字典中来打破单词。我已经用应该可以工作但没有打印出来的代码替换了杂乱无章的代码(可能缺少某些东西)。
标签: java spell-checking trie