지난 번에 Leetcode의 Anagram 문제를 한번 풀어 봤는데요.
이번에 Technical Interview 보면서 이 Anagram 문제가 나와서 한번 풀어봤습니다.
지난번 했던 방법으로 풀었기 했는데... 나중에 생각해 보니 또 다른 방법이 생각 나더라고요.
일단 지난번 글은 아래 링크에 있습니다.
https://coronasdk.tistory.com/1156
이 때 사용했던 로직을 풀면 아래와 같이 할 수 있습니다.
class Anagram1 {
public static void main(String[] args) {
boolean result = true;
String s = "abcd";
String t = "cdab";
if(s.length() != t.length()) {
result = false;
}
int[] sCounter = new int[26];
int[] tCounter = new int[26];
for(int i=0; i<s.length(); i++) {
sCounter[s.charAt(i) - 'a']++;
tCounter[t.charAt(i) - 'a']++;
}
for(int i = 0; i<26; i++){
if(sCounter[i] != tCounter[i]){
result = false;
}
}
if(result) {
System.out.println("This is Anagram.");
} else {
System.out.println("This is not Anagram");
}
}
}
ASCII Code를 이용한 방법인데요.
자세히 보시려면 위에 있는 링크로 가시면 설명한 것을 보실 수 있습니다.
이번엔 ArrayList로 루프 없이 만든 코드 입니다.
import java.io.*;
import java.util.*;
class Anagram2 {
public static void main(String[] args) {
boolean result = true;
String s = "abcd";
String t = "cdab";
if(s.length() != t.length()) {
result = false;
}
String[] sSplit = s.split("");
String[] tSplit = t.split("");
ArrayList<String> sList = new ArrayList<String>(
Arrays.asList(sSplit));
ArrayList<String> tList = new ArrayList<String>(
Arrays.asList(tSplit));
Collections.sort(sList);
Collections.sort(tList);
result = sList.equals(tList);
if(result) {
System.out.println("This is Anagram.");
} else {
System.out.println("This is not Anagram");
}
}
}
String 을 ArrayList로 만들어서 sorting을 하고 equals()를 사용해서 문제를 풀었습니다.
근데 역시 ASCII를 이용해서 for loop를 돌리는데 Runtime 이나 Memory 관리 면에서 훨씬 더 나은 방법인데요.
'etc. > Leetcode' 카테고리의 다른 글
Leetcode - 69. Sqrt(x) - Easy (0) | 2022.09.03 |
---|---|
Leetcode - 67. Add Binary - Easy (0) | 2022.09.03 |
Leetcode 66. Plus One - Easy (0) | 2022.09.02 |
Leetcode - 58. Length of Last Word - Easy (0) | 2022.08.25 |
Leetcode - 326. Power of Three - Easy (0) | 2022.08.25 |
Leetcode - 704. Binary Search - Easy (0) | 2022.08.22 |
Leetcode - 35. Search Insert Position + Big O + binary search (0) | 2022.08.21 |
Leetcode - 28. Implement strStr() - Easy (0) | 2022.08.18 |
Leetcode - 27. Remove Element - Easy (0) | 2022.08.18 |
Leetcode - 26. Remove Duplicates from Sorted Array - Easy (0) | 2022.08.18 |