Anagram Check
Anagram क्या है
दो शब्द anagrams हैं अगर वे बिल्कुल वही अक्षर इस्तेमाल करें, बस अलग क्रम में — जैसे listen और silent। Java में anagrams जाँचना classic string अभ्यास है, और दो साफ़ तरीके हैं: sorting और characters गिनना।
Sorting तरीका
import java.util.Arrays; String a = "listen", b = "silent"; char[] x = a.toCharArray(); char[] y = b.toCharArray(); Arrays.sort(x); Arrays.sort(y); System.out.println(Arrays.equals(x, y));
हम हर string को char array में बदलते हैं, दोनों sort करते हैं, और तुलना करते हैं। अगर वे anagrams हैं, sorting उन्हें एक जैसा बना देती है — Arrays.equals फिर true return करता है।
Dry run
| Step | Kya | Value |
|---|---|---|
| 1 | "listen" ke chars | l i s t e n |
| 2 | sorted | e i l n s t |
| 3 | "silent" ke chars | s i l e n t |
| 4 | sorted | e i l n s t |
| 5 | sorted arrays compare | e i l n s t == e i l n s t → Anagram! |
Anagrams वही अक्षर इस्तेमाल करते हैं, तो दोनों sort होने पर एक जैसे हो जाते हैं। sorted रूपों की तुलना तेज़, भरोसेमंद जाँच है।
Counting तरीका
String a = "listen", b = "silent";
if (a.length() != b.length()) {
System.out.println("Not anagram");
} else {
int[] count = new int[26];
for (char c : a.toCharArray()) count[c - 'a']++;
for (char c : b.toCharArray()) count[c - 'a']--;
boolean anagram = true;
for (int n : count) if (n != 0) anagram = false;
System.out.println(anagram);
}
हम पहले शब्द के अक्षर जोड़ते हैं और दूसरे के घटाते हैं। अगर हर count 0 पर ख़त्म हो, दोनों शब्दों ने वही अक्षर इस्तेमाल किए — वे anagrams हैं। यह sorting बचाता है।
Input साफ़ करना
असली जाँच को, पहले case और spaces अनदेखा कीजिए:
a = a.toLowerCase().replaceAll("\\s", "");
b = b.toLowerCase().replaceAll("\\s", "");
यह "Listen" और "Silent", या "conversation" और "voices rant on" जैसे phrase anagrams को case और spacing चाहे जो हो सही तुलना करने देता है।
आम गलतियाँ
- Lengths न जाँचना। अलग lengths कभी anagrams नहीं हो सकते — पहले जाँचिए।
- Case और spaces अनदेखा करना। वाक्यांशों को lowercase और spaces हटाइए।
- Arrays को
==से तुलना।Arrays.equalsइस्तेमाल कीजिए,==नहीं। - Counting में सिर्फ़ lowercase अक्षर मानना।
c - 'a'trick सिर्फ़ a-z मानता है।
सारांश
- Anagrams वही अक्षर अलग क्रम में इस्तेमाल करते हैं।
- Sorting तरीका: दोनों char arrays sort करके
Arrays.equalsसे तुलना। - Counting तरीका: एक से अक्षर जोड़िए, दूसरे से घटाइए, सब zero जाँचिए।
- Phrase anagrams को lowercase और spaces हटाइए।
- अलग lengths मतलब anagrams नहीं।
आगे, text reverse कीजिए reverse a string में, या sort कीजिए bubble sort से।
