迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 中的字谜

作者:迹忆客 最近更新:2023/08/01 浏览次数:

如果您喜欢玩文字游戏,您可能已经知道字谜一词。 如果两个字符串包含相同的字符,但在不同的单词中,则它们被称为彼此的字谜词。

例如,如果有两个单词 Race 和 Care,那么如果您查看它们,您会发现它们包含相同的字符,但顺序不同。

因此,我们可以将“Race”和“Care”这两个词互称为变位词。

在本文中,我们将了解如何确定两个单词是否是字谜词。 我们将通过示例和解释来涵盖该主题,以使该主题变得更容易。


在 Java 中查找 Anagram

在下面的示例中,我们说明了如何检查给定的两个句子是否是字谜词。 我们的示例代码如下所示:

// importing necessary packages
import java.util.Arrays;

public class JavaAnagram {
    static void MatchAnagram(String str1, String str2) {
        String Str_1 = str1.replaceAll("\\s", "");   // Removing the spaces from the first string
        String Str_2 = str2.replaceAll("\\s", "");   // Removing the spaces from the second string
        boolean Status = true;
        if (Str_1.length() != Str_2.length()) {   // Checking the length of two string
            Status = false;
        } else {
            // Converting all the characters to lower case and putting the chars of the string into a character
            char[] StringArray1 = Str_1.toLowerCase().toCharArray();
            char[] StringArray2 = Str_2.toLowerCase().toCharArray();
            // Shorting the array.
            Arrays.sort(StringArray1);
            Arrays.sort(StringArray2);
            // Matching both array.
            Status = Arrays.equals(StringArray1, StringArray2);
        }
        if (Status) {
            System.out.println( Str_1 + " and " + Str_2 + " = Anagrams" );
        } else {
            System.out.println( Str_1 + " and " + Str_2 + " = Anagrams" );
        }
    }

    public static void main(String[] args) {
        MatchAnagram("Keep", "Peek");
        MatchAnagram("Race", "Care");
    }
}

我们已经掌握了每条线的用途。 我们在计划中遵循的主要步骤是:

  • 首先,我们删除了句子中的所有空格。
  • 然后,我们检查两个句子的长度是否相同。
  • 如果长度相同,我们首先将所有字符转换为小写。
  • 现在,我们将这两个句子的所有字符放入两个不同的数组中并对数组进行排序。
  • 最后,我们匹配两个数组是否包含相同的元素。
  • 如果它们匹配,则两个句子都是字谜词。

运行示例后,您将在控制台中看到以下输出:

Keep and Peek = anagrams
Race and Care = anagrams

在 Java 中使用 XOR 查找 Anagram

在下面的示例中,我们将说明如何使用按位异或在 Java 中查找字谜词。 代码如下:

public class JavaAnagram {
    public static void main(String[] args){
        // Declaring two string
        String STR_1 = "Race";
        String STR_2 = "Care";

        if (AnagramChecking(STR_1, STR_2))
            System.out.println(STR_1 + " & " + STR_2 + " = Anagrams");
        else
            System.out.println(STR_1 + " & " + STR_2 + " = Not Anagrams");
    }

    public static boolean AnagramChecking(String STR_1, String STR_2)
    {
        // Remove all white spaces, convert to lower case & character array
        char[] StringArr1 = STR_1.replaceAll("\\s", "").toLowerCase().toCharArray();
        char[] StringArr2 = STR_2.replaceAll("\\s", "").toLowerCase().toCharArray();
        if (StringArr1.length != StringArr2.length) // Matching the length
            return false;

         int DoXOR = 0;

         for (int i = 0; i < StringArr1.length; i++) // Performing XOR operation
         {
             DoXOR ^= StringArr1[i] ^ StringArr2[i];
         }

         return DoXOR == 0? true: false;
    }
}

我们已经指出了每行的用途。 现在,运行示例代码后,您将在控制台中看到以下输出:

Race & Care = Anagrams

在 Java 中使用 HashMap 查找 Anagram

在下面的示例中,我们将说明如何使用 HashMap 在 Java 中查找字谜。 代码如下:

// importing necessary packages
import java.util.HashMap;

public class JavaAnagram {
    public static void main(String[] args){
        // Declaring two string
        String STR_1 = "Race";
        String STR_2 = "Care";
        if (AnagramCheck(STR_1.toLowerCase(), STR_2.toLowerCase()))
            System.out.println(STR_1 + " & " + STR_2 + " = Anagrams");
        else
            System.out.println(STR_1 + " & " + STR_2 + " = Not Anagrams");
    }

    public static boolean AnagramCheck(String STR_1, String STR_2){
        if (STR_1.length() != STR_2.length())  // Matching the length
            return false;
        HashMap<Character, Integer> MyMap = new HashMap<Character, Integer>(); // Declaring a hashmap
        for (int i = 0; i < STR_1.length(); i++){
            char ch = STR_1.charAt(i);
            if (MyMap.containsKey(ch))
                MyMap.put(ch, MyMap.get(ch) + 1);
            else
                MyMap.put(ch, 1);
        }
        for (int i = 0; i < STR_2.length(); i++){
            char ch = STR_2.charAt(i);
            if (MyMap.containsKey(ch))
            {
                if (MyMap.get(ch) == 1)
                    MyMap.remove(ch);
                else
                    MyMap.put(ch, MyMap.get(ch) - 1);
            } else
                return false;
        }
        if (MyMap.size() > 0) return false;
        return true;
    }
}

现在,运行示例代码后,您将在控制台中看到以下输出:

Race & Care = Anagrams

请注意,此处共享的代码示例是 Java 语言,如果您的系统不包含 Java,则必须在您的环境中安装 Java。

上一篇:在 Java 中反序列化 JSON

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Java 中反序列化 JSON

发布时间:2023/08/01 浏览次数:99 分类:Java

本文介绍如何在 Java 中反序列化 JSON。在 Java 中反序列化 JSON 提供了用于 JSON 操作的不同库。 这些库还可以在 Java 中序列化和反序列化 JSON 对象。

在 Java 中将对象序列化为 JSON

发布时间:2023/07/21 浏览次数:197 分类:Java

本文介绍了如何使用 Java-JSON 和 Jackson API 在 Java 中将对象序列化为 JSON。在 Java 中将对象序列化为 JSON 提供了用于 JSON 操作的不同库。

在 Java 中漂亮打印 JSON 数据

发布时间:2023/07/21 浏览次数:115 分类:Java

我们将使用必要的示例和解释来讨论该主题,以使问题变得更容易。 我们将在本文中讨论三种最常用的方法。在 Java 中使用 Gson 漂亮地打印 JSON 数据

在 Java 中合并 PDF

发布时间:2023/07/21 浏览次数:160 分类:Java

本文将展示如何在 Java 中合并多个 PDF 文件以及必要的示例和解释来阐明该主题。在Java中使用PDFBox合并PDF 在下面的示例中,我们将说明如何使用 PDFBox 合并两个不同的 PDF。

在 Java 接口中定义静态方法

发布时间:2023/07/21 浏览次数:187 分类:Java

本文列出了 Java 接口中静态方法的规则,并演示了如何定义它们以及为什么我们不能重写它们。 我们还将探讨 Java 8 之前的接口中没有静态方法的原因。Java接口中的静态方法

Java 禁用 SSL 验证

发布时间:2023/07/21 浏览次数:104 分类:Java

本文将展示如何在创建 HTTP 连接时禁用此证书验证。 此外,我们将编写一个示例代码,并提供有关该主题的解释,以使其易于理解。Java 禁用 SSL 验证

限制 Java SSL 调试日志记录

发布时间:2023/07/21 浏览次数:184 分类:Java

通过本文我们将了解 Java SSL 调试、其重要性、各种实用程序以及如何在单个命令中使用一个或多个实用程序。Java SSL 调试及其重要性

Java 集成测试简介

发布时间:2023/07/21 浏览次数:103 分类:Java

本文介绍集成测试并重点介绍如何将其与单元测试区分开来。 此外,它还讨论了各种类型的集成测试,并考虑了它们的优缺点。然后,我们将了解执行集成测试所需的步骤,然后通过实际场景

捕获并分析 Java 堆转储

发布时间:2023/07/21 浏览次数:68 分类:Java

堆转储包含正在运行的 Java 应用程序在 Java 堆上使用的所有活动对象的快照。 本教程介绍堆转储、其各种格式及其重要性。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便