Java 中的字谜
如果您喜欢玩文字游戏,您可能已经知道字谜一词。 如果两个字符串包含相同的字符,但在不同的单词中,则它们被称为彼此的字谜词。
例如,如果有两个单词 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 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,