gpt4 book ai didi

java - 比较数组内容精度算法

转载 作者:行者123 更新时间:2023-12-02 07:45:27 25 4
gpt4 key购买 nike

我在数组中有 voiceResults 来搜索联系人:

Ben McDonald
Ben MacDonald
Ken McDonald
Ken MacDonald

我已经在另一个数组中建立了潜在的匹配(示例):

Ben McDonald
Benjamin MacDonald
Donna McBlead //anagram
Ben Mad
abcdelmno //occurrences in alphabetical order
onmledcba //occurrences in reverse alphabetical order
completely Random
a cannon
BK Lounge

我的目标是确定用户最有可能想要查看的联系人。

当循环两个数组时,我想使用与游戏 Mastermind 类似的逻辑,我可以在其中查看字母是否“正确但位置错误”或“正确但位置正确”。然后我可以将其与元素的 .length() 进行比较,并获得字母匹配和精确位置匹配的 float 百分比。

为了执行上述操作,我不仅需要在数组的元素之间循环,然后还需要按字母分解元素并比较这些单独的元素字母。建立Mastermind/anagram按照逻辑,我需要删除匹配的字母,直到留下不匹配的字母,然后再次将该数量与原始长度进行比较以获得百分比。

查看上面的示例数组数据,我还需要反向执行此操作并吐出名字和姓氏。

对于每个数组,我从以下内容开始:

    ArrayList<String> voiceResults = new ArrayList<String>();
ListIterator<String> itr = voiceResults .listIterator();
Arrays.asList(voiceResults.toArray());

while (itr.hasNext()) {
sid = itr.nextIndex();
element = itr.next();

sidpass = sid.toString();
rawpass = element.toString().toLowerCase();
rawpass.trim();

hcs = rawpass.split("\\s");
hnc = hcs.length;

if (hnc == 2) {
fn = hcs[0]; //first name
ln = hcs[1]; //last name
fn = fn.replaceAll("[^a-z]", ""); //remove punctuation
ln = ln.replaceAll("[^a-z]", "");

}

我发布了上述内容,但我确定这不是正确的启动方法。

阅读了许多字谜检查和算法的示例,它们差异很大,并使用 for 和 while 循环、 HashMap 、哈希表、直方图、浮点值等。

我举起双手,我完全不知道哪个是最初执行这些循环、内部循环、内部元素循环的最佳/最快/最实用的方法......

如果我能就如何构建循环提出一些建议,我将不胜感激。

字母比较和反向迭代的进一步建议/示例/链接将非常棒。希望那时我能把一切拼凑起来。

最后,我应该如何存储这些与元素相关的百分比?

我先谢谢你了。

请注意:尽管示例数据可能另有说明,但我已经使用了循环和 .contains() .matches() 等。

最佳答案

有许多不同的拼写算法,但过去我使用过 LevenshteinSoundex (各有其优点和缺点)。 Soundex 可能更适合您,因为您是从声乐中获得此信息的。

您可能还想查看:

Getting the closest string match

What algorithm gives suggestions in a spell checker?

关于java - 比较数组内容精度算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10948912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com