如何在 Java 中检查字谜并查找给定字符串的所有字谜 [已关闭]

问题描述 投票:0回答:1

我需要编写一个具有两个功能的Java程序:

  1. 检查两个文本是否是彼此的字谜。
  2. 在功能 #1 的所有输入中:提供给定字符串的所有字谜词。 功能 #1 的输入不需要在程序的多次运行中保持不变。

对于功能#2:

  • 考虑到 feature#1 函数的这些假设调用 -> f1(A, B), f1(A, C), f1(A, D) IF A、B 和 D 是字谜词
  • f2(A) 应该返回 [B, D]
  • f2(B) 应该返回 [A, D]
  • f2(C) 应该返回 [] 这是我到目前为止所拥有的:
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class AnagramChecker {
    
    public static boolean isAnagram(String str1, String str2) {
        
        if(str1.length() != str2.length()) {
        return false;
        }
        
        str1 = str1.toLowerCase();
        str2 = str2.toLowerCase();
        
        char[] charArray1 = str1.toCharArray();
        char[] charArray2 = str2.toCharArray();
        
        Arrays.sort(charArray1);
        Arrays.sort(charArray2);
        
        return Arrays.equals(charArray1, charArray2);
    }
    
      public static void main(String[] args) {
            
            Scanner scanner = new Scanner(System.in);

          }
}

如何实施

getAllAnagrams
?预先感谢。

java string algorithm collections anagram
1个回答
3
投票

我假设在

isAnagram("silent", "listen")
isAnagram("silent", "lentis")
之后
getAllAnagrams("lentis")
也应该返回
["listen", "silent"]

我建议采用以下方法:

  1. 保留 HashMap>
  2. 每当您找到一个字谜词时:使用已排序的字符串(两者都相同)作为键来获取正确的集合,并将两个未排序的字符串添加到该集合中
  3. 检索时
    getAllAnagrams(someString)
    再次使用排序后的字符串作为键并返回集合的内容(似乎不包含 someString)

祝你作业顺利

© www.soinside.com 2019 - 2024. All rights reserved.