Skip to content

Commit

Permalink
Merge pull request #38 from PalAditya/master
Browse files Browse the repository at this point in the history
Fix issue #36: Anagram check
  • Loading branch information
iluwatar committed Nov 8, 2019
2 parents c77b05a + 25ea91f commit 932a50a
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 0 deletions.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ For new snippets the general steps are
* [Palindrome check](#palindrome-check)
* [Reverse string](#reverse-string)
* [String to date](#string-to-date)
* [Anagram check](#anagram-check)

## Algorithm

Expand Down Expand Up @@ -392,3 +393,24 @@ For new snippets the general steps are
```

[⬆ back to top](#table-of-contents)

### Anagram Check

```java
public boolean isAnagram(String s1, String s2) {
var l1 = s1.length();
var l2 = s2.length();
var arr1 = new int[256];
var arr2 = new int[256];
if (l1 != l2) {
return false;
}
for (var i = 0; i < l1; i++) {
arr1[s1.charAt(i)]++;
arr2[s2.charAt(i)]++;
}
return Arrays.equals(arr1, arr2);
}
```

[⬆ back to top](#table-of-contents)
21 changes: 21 additions & 0 deletions src/main/java/Library.java
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,27 @@ public static boolean isPalindrome(String s) {
return forward.equals(backward);
}

/**
* Checks if two words are anagrams (contains same characters with same frequency in any order).
* @param s1 The first string to be checked
* @param s2 The second string to be checked
* @return true if they are anagrams of each other
*/
public static boolean isAnagram(String s1, String s2) {
var l1 = s1.length();
var l2 = s2.length();
var arr1 = new int[256];
var arr2 = new int[256];
if (l1 != l2) {
return false;
}
for (var i = 0; i < l1; i++) {
arr1[s1.charAt(i)]++;
arr2[s2.charAt(i)]++;
}
return Arrays.equals(arr1, arr2);
}

/**
* List files in directory.
* @param folder the path where to look
Expand Down
12 changes: 12 additions & 0 deletions src/test/java/LibraryTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -328,4 +328,16 @@ public void testGcd() {
assertEquals(Library.gcd(18, 24), 6);
assertEquals(Library.gcd(7, 7), 7);
}

/**
* Tests for {@link Library#isAnagram(String, String)}.
*/
@Test
public void testIsAnagram() {
assertTrue(Library.isAnagram("Aditya","aytdiA"));
assertFalse(Library.isAnagram("Aditya","aytida"));
assertTrue(Library.isAnagram("~~# @!","~@!#~ "));
assertTrue(Library.isAnagram("Mother In Law","hIt Ler woMan"));
assertFalse(Library.isAnagram("aa","aaa"));
}
}

0 comments on commit 932a50a

Please sign in to comment.