ในบทความนี้ เราจะเรียนรู้วิธีตรวจสอบว่า สตริงสองตัวเป็น Anagram กันหรือไม่ Anagram คือคำหรือวลีที่เกิดจากการจัดเรียงตัวอักษรของคำอื่นใหม่ โดยใช้ตัวอักษรเดิมครบถ้วน จำนวนครั้งเท่าเดิม
ตัวอย่าง: "Race" และ "Care" เป็น Anagram กัน เพราะทั้งคู่มีตัวอักษร r, a, c, e ครบถ้วน
ตัวอย่าง Input และ Output
Input:
Enter the first string : Race Enter the second string : Care
Output:
The strings race and care are anagram.
อัลกอริธึม
ขั้นตอนที่ 1 - เริ่มต้น ขั้นตอนที่ 2 - ประกาศตัวแปรสตริง 2 ตัว my_string_1, my_string_2 ขั้นตอนที่ 3 - อ่านค่าจากผู้ใช้ หรือกำหนดค่าเริ่มต้น ขั้นตอนที่ 4 - แปลงทั้งสองสตริงเป็นตัวเล็กด้วย toLowerCase() ขั้นตอนที่ 5 - ตรวจสอบความยาว ถ้าไม่เท่ากัน = ไม่ใช่ Anagram ขั้นตอนที่ 6 - แปลงเป็น char array แล้วเรียงลำดับ (sort) ขั้นตอนที่ 7 - ใช้ Arrays.equals() เปรียบเทียบ ถ้าเท่ากัน = Anagram ขั้นตอนที่ 8 - แสดงผลลัพธ์ ขั้นตอนที่ 9 - หยุด
ตัวอย่างที่ 1: รับค่าจากผู้ใช้
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
System.out.println("Required packages have been imported");
String my_string_1, my_string_2;
Scanner my_scanner = new Scanner(System.in);
System.out.println("A reader object has been defined");
System.out.print("Enter the first string : ");
my_string_1 = my_scanner.nextLine();
System.out.print("Enter the second string : ");
my_string_2 = my_scanner.nextLine();
my_string_1 = my_string_1.toLowerCase();
my_string_2 = my_string_2.toLowerCase();
if (my_string_1.length() == my_string_2.length()) {
char[] my_array_1 = my_string_1.toCharArray();
char[] my_array_2 = my_string_2.toCharArray();
Arrays.sort(my_array_1);
Arrays.sort(my_array_2);
boolean my_result = Arrays.equals(my_array_1, my_array_2);
if (my_result) {
System.out.println("The strings " + my_string_1 + " and " + my_string_2 + " are anagram.");
} else {
System.out.println("The strings " + my_string_1 + " and " + my_string_2 + " are not anagram.");
}
} else {
System.out.println("The strings " + my_string_1 + " and " + my_string_2 + " are not anagram.");
}
}
}
Output
Required packages have been imported A reader object has been defined Enter the first string : Race Enter the second string : Care The strings race and care are anagram.
ตัวอย่างที่ 2: กำหนดค่าไว้ล่วงหน้า
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
System.out.println("Required packages have been imported");
String my_string_1, my_string_2;
my_string_1 = "Race";
my_string_2 = "Care";
System.out.println("The two strings are defined as " + my_string_1 + " and " + my_string_2);
my_string_1 = my_string_1.toLowerCase();
my_string_2 = my_string_2.toLowerCase();
if (my_string_1.length() == my_string_2.length()) {
char[] my_array_1 = my_string_1.toCharArray();
char[] my_array_2 = my_string_2.toCharArray();
Arrays.sort(my_array_1);
Arrays.sort(my_array_2);
boolean my_result = Arrays.equals(my_array_1, my_array_2);
if (my_result) {
System.out.println("The strings " + my_string_1 + " and " + my_string_2 + " are anagram.");
} else {
System.out.println("The strings " + my_string_1 + " and " + my_string_2 + " are not anagram.");
}
} else {
System.out.println("The strings " + my_string_1 + " and " + my_string_2 + " are not anagram.");
}
}
}
Output
Required packages have been imported The two strings are defined as Race and Care The strings race and care are anagram.