Java程式:檢查兩個字串是否為字謎


字謎是指透過重新排列兩個或多個單詞的字母而形成的單詞或短語。因此,檢查兩個給定字串是否為字謎的邏輯如下:假設有兩個字串,如果兩個字串都包含相同的一組字母以及相同數量的字母(無論其順序如何),那麼我們可以說這兩個字串是字謎,否則不是。現在,讓我們瞭解如何在我們的Java程式中實現此邏輯,以查詢兩個字串是否為字謎。

問題陳述

在開始編寫Java程式來檢查兩個字串是否為字謎之前,讓我們首先討論一下問題陳述。

示例

輸入

String1 = "Heart";
String2 = "Earth";

輸出

Both strings are anagram

解釋

如果我們重新排列這兩個字串,它們將變成“aehrt”。因此,它們是字謎。

現在,讓我們以程式設計方式討論上述邏輯。

檢查兩個字串是否為字謎的方法

  • 首先,初始化兩個陣列並將它們的字元轉換為小寫。

  • 然後,使用if-else塊檢查兩個字串的長度是否相同。如果相同,則進入塊;否則退出並列印這兩個字串不是字謎。

  • 如果兩個字串長度相同,則進入if-else塊。在此塊內,首先將字串轉換為字元陣列,以便我們可以對它們的字元進行排序。

  • 現在,使用Arrays.sort()方法對兩個陣列進行排序。

  • 最後,使用Arrays.equals()方法檢查兩個陣列是否包含相同的字元。如果兩個陣列包含相同的字元,則列印字串是字謎,否則不是字謎。

示例1

以下示例說明如何在Java中檢查兩個字串是否為字謎。

import java.util.Arrays;
public class Main {
   public static void main(String[] args) {
      // initializing two Strings
      String inputStr1 = "Heart";
      String inputStr2 = "Earth";
      System.out.println("The given strings are: " + inputStr1 +" and " + inputStr2);
      // converting their characters to lowercase
      inputStr1 = inputStr1.toLowerCase();
      inputStr2 = inputStr2.toLowerCase();
      // to check both strings are anagram or not
      if(inputStr1.length() == inputStr2.length()) { // checking length
         // converting the given strings into character arrays
         char[] array1 = inputStr1.toCharArray();
         char[] array2 = inputStr2.toCharArray();
         // sorting both arrays
         Arrays.sort(array1);
         Arrays.sort(array2);
         // checking equality and printing the result
         if(Arrays.equals(array1, array2)) {
            System.out.println("Both strings are anagram");
         } else {
            System.out.println("Both strings are not anagram.");
         }
      } else {
         System.out.println("Both strings are not anagram.");
      }
   }
}

輸出

The given strings are: Heart and Earth
Both strings are anagram

示例2

這是另一個Java程式,用於檢查兩個字串是否為字謎。在這個示例中,我們將建立一個使用者定義的方法,其中包含用於檢查字謎的邏輯。

import java.util.Arrays;
public class Main {
   public static boolean checkAnagram(String inputStr1, String inputStr2) {
      // converting their characters to lowercase
      inputStr1 = inputStr1.toLowerCase();
      inputStr2 = inputStr2.toLowerCase();
      // to check both strings are anagram or not
      if(inputStr1.length() == inputStr2.length()) { // checking length
         // converting the given strings into character arrays
         char[] array1 = inputStr1.toCharArray();
         char[] array2 = inputStr2.toCharArray();
         // sorting both arrays
         Arrays.sort(array1);
         Arrays.sort(array2);
         // checking the characters are same or not
         for (int i = 0; i < array1.length; i++) {
            if ( array1[i] !=  array2[i]) {
               return false;
            } 
         }
      } 
      return true;
   }
   public static void main(String[] args) {
      // initializing two Strings
      String inputStr1 = "Race";
      String inputStr2 = "Care";
      System.out.println("The given strings are: " + inputStr1 +" and " + inputStr2);
      // calling the method to check anagram
      if(checkAnagram(inputStr1, inputStr2)) {
         System.out.println("Both strings are anagram");
      } else {
         System.out.println("Both strings are not anagram.");
      }
   }
}

輸出

The given strings are: Race and Care
Both strings are anagram

結論

我們從定義字謎字串和解釋檢查兩個字串是否為字謎的邏輯開始這篇文章。在下一節中,我們藉助示例更精確地理解了該邏輯。稍後,我們編寫了兩個Java程式來檢查兩個給定的字串是否為字謎。

更新於:2024年7月5日

3K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告