gpt4 book ai didi

java - Anagram Checker 解决管测验

转载 作者:行者123 更新时间:2023-12-01 19:39:25 25 4
gpt4 key购买 nike

正如您在标题中看到的,我正在尝试编写一个程序,该程序可以为我解决“晚间标准管测验”。它的一部分。它必须能够在地铁站名称中找到字谜。我在网上找到了很多代码来检查两个单词是否是字谜。但我需要一些不同的东西:我想向程序提供伦敦所有地铁站的名称,并给它一个字谜来比较和检查它是否适合其中一个车站名称。我怎么做?您可以在下面看到我的“比较两个单词”代码:

package anagram;

import java.util.Arrays;

public class anagram {
static void isAnagram(String str1, String str2) {
String s1 = str1.replaceAll("\\s", "");
String s2 = str2.replaceAll("\\s", "");
boolean status = true;
if (s1.length() != s2.length()) {
status = false;
} else {
char[] ArrayS1 = s1.toLowerCase().toCharArray();
char[] ArrayS2 = s2.toLowerCase().toCharArray();
Arrays.sort(ArrayS1);
Arrays.sort(ArrayS2);
status = Arrays.equals(ArrayS1, ArrayS2);
}
if (status) {
System.out.println(s1 + " and " + s2 + " are anagrams");
} else {
System.out.println(s1 + " and " + s2 + " are not anagrams");
}
}

public static void main(String[] args) {
isAnagram("Keep", "Peek");
isAnagram("Mother In Law", "Hitler Woman");
}
}

最佳答案

简单:

  • 首先构建一个管词集合,其中字符为小写并排序(例如 keep --> eekp)。
  • 对于您要检查的每个候选者,执行相同的操作(例如 Peek --> eekp)并在您的集合中搜索它。
  • 如果找到,则表示您找到了一个字谜词。

示例:

public static String orderString(String candidate) {
char[] ccc = candidate
.replaceAll("[^\\p{IsAlphabetic}]", "")
.toLowerCase()
.toCharArray();
Arrays.sort(ccc);
return String.valueOf(ccc);
}

public static void main(String... args) {
Collection<String> tubeStations
= Arrays.asList("Acton Town",
"Acton Central", "Aldgate",
"Aldgate East", "Alperton",
"...");
Map<String, String> tubeMapAnagram = new java.util.LinkedHashMap<>();
for (String currCandidate: tubeStations) {
tubeMapAnagram.put(orderString(currCandidate), currCandidate);
}
String myCandidate = "Alpen Tor";
String foundOriginal = tubeMapAnagram.get(orderString(myCandidate));
if (foundOriginal!=null) {
System.out.println("anagram found for '"+foundOriginal+"'");
}
}

通过使用 orderString() 方法,即使您最初的示例也可以变得更简单。

boolean isAnagram(String str1, String str2) {
return Objects.equals(orderString(str1), orderString(str2));
}

关于java - Anagram Checker 解决管测验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55848207/

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