Rumah  >  Artikel  >  Java  >  Program Anagram di Jawa

Program Anagram di Jawa

PHPz
PHPzasal
2024-08-30 16:26:59760semak imbas

Anagram ialah perkataan yang dibentuk dengan merombak atau menyusun semula huruf perkataan yang berbeza; perkara penting dalam anagram ialah huruf boleh digunakan sekali sahaja dan tidak boleh diulang dalam perkataan baharu. Anagram ialah perkataan yang mempunyai bilangan huruf yang sama. Kiraan di sini sangat penting. Program anagram dalam Java boleh digunakan dalam cara di atas dengan menyusun dan membandingkan dua rentetan. Jika ini berjaya, maka ini bermakna rentetan itu ialah anagram.

Mulakan Kursus Pembangunan Perisian Percuma Anda

Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain

Algoritma:

Mari kita lihat algoritma mendapatkan anagram daripada perkataan tertentu. Terdapat tiga cara untuk mengetahui anagram. Kami akan menerangkan ketiga-tiga cara, satu demi satu. Algoritma asas terdiri daripada menyemak panjang rentetan. Setelah panjangnya sama, ia boleh diisih atau dikira dan disemak untuk mendapatkan anagram.

Contoh Program Anagram dalam Java

Perkara pertama yang boleh kita lakukan untuk rentetan yang diberikan ialah mengisih kedua-dua rentetan yang diberikan yang akan disahkan jika ia adalah anagram. Setelah pengisihan selesai, maka ia boleh dibandingkan dalam susunan yang disusun. Kerumitan masa untuk kaedah ini ialah O (n Logn). Kod Java untuk ini boleh ditulis seperti di bawah:

Contoh #1

Kod:

// JAVA program to validate if two strings are anagrams
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
class Main {
/* Below is a function which checks if the strings are anagram */
static boolean checkAnagram(char[] strana1, char[] strana2)
{
// Finding lengths of strings
int len1 = strana1.length;
int len2 = strana2.length;
// If lengths do not match then they cannot be anagrams
if (len1 != len2)
return false;
// Sort both strings
Arrays.sort(strana1);
Arrays.sort(strana2);
// Comparing the strings which are sorted earlier
for (int i = 0; i < len1; i++)
if (strana1[i] != strana2[i])
return false;
return true;
}
/* Main program to test Anagram*/
public static void main (String args[])
{
char strana1[] = { 't', 'e', 's', 't' };
char strana2[] = { 't', 't', 'e', 'w' };
if (checkAnagram(strana1, strana2))
System.out.println("The strings to be checked are" + " anagram of each other");
else
System.out.println("The strings to be checked are not" + " anagram of each other");
}
}

Atur cara di atas mula-mula menyemak panjang kedua-dua rentetan yang diberikan. Jika rentetan tidak mempunyai panjang yang sama, maka ia akan kembali palsu. Hanya jika panjang kedua-dua rentetan adalah sama, maka program akan maju lebih jauh. Dengan menggunakan fungsi isihan tatasusunan, ia akan mengisih rentetan dalam dua tatasusunan. Setelah fungsi isihan tatasusunan digunakan pada kedua-dua rentetan, maka rentetan itu dibandingkan, dan setiap huruf dibandingkan untuk satu gelung. Jika gelung for berjaya dan semua huruf dalam kedua-dua rentetan adalah sama, maka output akan menjadi anagram. Walaupun satu huruf tidak sepadan, maka ia akan kembali palsu. Program utama di sini menyemak rentetan dan memaparkan sama ada rentetan itu adalah anagram atau tidak bergantung pada hasil yang dikembalikan oleh fungsi checkAnagram.

Output:

Program Anagram di Jawa

Jika kita menukar input kepada 't', 't', 'e', ​​'s' dan bukannya w output akan menjadi seperti di bawah.

Output:

Program Anagram di Jawa

Contoh #2

Kaedah ini boleh digunakan apabila rentetan di bawah pengesahan adalah kecil. Kaedah ini menganggap bahawa aksara yang disimpan adalah 8 bit dan boleh menyimpan kemungkinan 256 aksara. Dalam kaedah ini, anda boleh mengira rentetan terlebih dahulu menggunakan tatasusunan kiraan yang mempunyai saiz 256 dan memulakan semua nilai yang diperlukan dalam tatasusunan kiraan sebagai 0. Melintasi tatasusunan ini dan menambah kiraan semasa melintasi. Setelah ini selesai, anda boleh membandingkan tatasusunan kiraan. Jika kiraan adalah sama, maka keputusan yang dikembalikan adalah benar.

Kod:

import java.io.*;
import java.util.*;
class ANA {
static int NO_CHARS = 256;
/* Below is a function which checks if the strings are anagram */
static boolean isAnagram(char strana1[], char strana2[])
{
// Here we create two arrays and initialize it to 0
int cnt1[] = new int[NO_CHARS];
Arrays.fill(cnt1, 0);
int cnt2[] = new int[NO_CHARS];
Arrays.fill(cnt2, 0);
int i;
// For every character in input strings, increment the count
for (i = 0; i < strana1.length && i < strana2.length;
i++) {
cnt1[strana1[i]]++;
cnt2[strana2[i]]++;
}
// Checking If both strings are of different length
if (strana1.length != strana2.length)
return false;
// Compare count arrays
for (i = 0; i < NO_CHARS; i++)
if (cnt1[i] != cnt2[i])
return false;
return true;
}
/* Main program to test to check if string is Anagram or not*/
public static void main(String args[])
{
char strana1[] = ("silent").toCharArray();
char strana2[] = ("lisent").toCharArray();
if (isAnagram(strana1, strana2))
System.out.println("The strings to be checked are" + " anagram of each other");
else
System.out.println("The strings to be checked are not" + " anagram of each other");
}
}

Output:

Program Anagram di Jawa

Contoh #3

Anagram boleh disemak dengan menggunakan fungsi StringBuilder dalam Java. Kita boleh menggunakan kaedah deletechartAt() untuk memadam sebarang aksara yang terdapat dalam rentetan kedua.

Kod:

public class Main
{
static void findAnagram(String str1, String str2)
{
String copystr1 = str1.replaceAll( " ", "").toLowerCase();
String copystr2 = str2.replaceAll(" ", "").toLowerCase();
//Setting the initial status to true
boolean flag = true;
if(copystr1.length() != copystr2.length())
{
//If copystr1 and copystr2 do not have same length then set the flag to false
flag = false;
}
else
{
//changing copystr1 to char array
char[] str1Array = copystr1.toCharArray();
//Creating StringBuilder from copystr2
StringBuilder sb = new StringBuilder(copystr2);
//Validating if  each character of str1Array is present in string builder
for (char c : str1Array)
{
int index = sb.indexOf(""+c);
if (index != -1)
{
sb = sb.deleteCharAt(index);
}
else
{
//If each character is not present, setting flag to false and breaking the loop
flag = false;
break;
}
}
}
if(flag)
{
System.out.println(str1+" and "+str2+" are anagrams");
}
else
{
System.out.println(str1+" and "+str2+" are not anagrams");
}
}
public static void main(String[] args)
{
findAnagram("Silent", "Listen");
}
}

Atur cara di sini menggunakan bendera dan menggunakan modul pembina rentetan yang membantu memadamkan aksara tambahan.

Output:

Program Anagram di Jawa

Atas ialah kandungan terperinci Program Anagram di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Nombor Khas di JawaArtikel seterusnya:Nombor Khas di Jawa