如何检查两个字符串是否为字谜?

2022-04-07 00:00:00 string arrays project java anagram

以下是我的项目的详细信息:
字谜:这个项目的目标是创建一个游戏,在这个游戏中,用户可以看到 一个单词的变形词,必须在有限的数量中猜出正确的单词 尝试。 项目特点:

  1. 用户被给予一定次数的尝试来猜测正确的单词。数字 尝试次数取决于单词的长度。
  2. 每次错误尝试后,系统都会向用户提供正确单词的提示。
  3. 如果用户无法在固定的尝试次数内猜到正确的单词,则 显示正确的单词,游戏进入下一个单词。
  4. 提供退出游戏的控件。

我面临的问题:

我可以从字符串数组中提取一个随机字词,但无法将其与输出进行比较,因为输出是一个普通字符串。我想知道如何解决这个问题,以及我应该如何继续,我不需要提示部分的答案,我只想知道如何比较两种类型的字符串。

import java.util.Arrays;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.*;
import java.util.Scanner;
import java.util.*;

public class main {
    String A = "words[index]";

    static boolean isAnagram(String A, String B) {
        if (A.length() != B.length()) {
            return false;
        } else {
            char a[] = A.toLowerCase().toCharArray();
            char b[] = A.toLowerCase().toCharArray();

            Arrays.sort(a);
            Arrays.sort(b);
            String sortedA = String.valueOf(a);
            String sortedB = String.valueOf(B);
            if (sortedA.equals(sortedB)) {
            }
        }
        return false;
    }

    public static void main(String[] args) {
        String[] words = {"Rat", "Car", "Below", "Taste", "Cried", "Study", "Thing", "Chin"};
        Random random = new Random();
        int index = random.nextInt(words.length);
        System.out.println("The given word is: " + words[index]);

        Scanner sc = new Scanner(System.in);
        String B = sc.next();
        if (isAnagram(String A, String B)) {
            System.out.println("not an angram");
        } else {
            System.out.println("Sucess");
        }
    }
}

解决方案

使用集合检查两个字符串是否为字谜:

package StringPackage;
import java.util.*;

public class AnagramUsingCollections {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        char[] string1 = "aab".toCharArray();
        char[] string2 = "baa".toCharArray();

        Map<Character, Integer> hm = new HashMap<>();
        for (char no : string1) {
            //for start
            Integer count = hm.get(no);
            if (count == null) {
                hm.put(no, 1);
            } else {
                count++;
                hm.put(no, count);
            }
            //for end
        }
        if (string1.length == string2.length) {
            for (char no : string2) {
                //baa
                Integer count = hm.get(no);
                if (count == null) {
                    hm.put(no, 1);
                } else {
                    count--;
                    hm.put(no, count);
                }
            }//for end
        }
        Set<Map.Entry<Character, Integer>> se = hm.entrySet();
        for (Map.Entry<Character, Integer> me : se) {
            if (me.getValue() > 0) {
                System.out.println("Not an anagram");
                break;
            } else {
                System.out.println("IS an anagram");
                break;
            }
        }
    }
}

相关文章