[릿코드] 242 Valid Anagram (21.05.30)
오늘도 역시
기출문제 푸는 날이므로
릿코드!!!!!!!!!!!!!
본격적 재밌고 어려운 문제를 풀 것 같지만
.
.
.
나를 제외한 모두가 시험기간이므로
쉬운 문제 하나를 풀기로 했다 ㅎㅎㅎㅎㅎ......
그래서
오늘의 문제는
바로 바로
LeetCode 242. Vlid Anagram
Given two strings s and t, return true if t is an anagram of s, and false otherwise.
Constraints:
- 1 <= s.length, t.length <= 5 * 104
- s and t consist of lowercase English letters.
문제 사이트 : https://leetcode.com/problems/valid-anagram/
Valid Anagram - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
Anagram의 뜻을 잘 몰랐기 때문에
문제 해석에 어려움이 있어 스터디 친구가 설명해주었다!!!!!
s 와 t 가 입력값이라면, s의 순서를 바꿔서 t를 만들 수 있으면 TRUE
그래서 . . .
여기서 핵심 포인트!!!
- 어떻게 해당 문자열의 포함 여부를 확인할 것인가
- contains 뿐 아니라 순서가 바뀌는 것도 확인해야 한다!!!
직접 작성해본 소스코드 및 간단한 설명
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length())
return false;
List<String> list = new ArrayList();
String [] sArray = s.split("");
for(String tmp : sArray){
list.add(tmp);
}
String [] tArray = t.split("");
for(String tmp : tArray){
if(!list.contains(tmp))
return false;
else{
list.remove(tmp);
}
}
return true;
}
}
- 먼저 contains() 함수를 활용하여 값을 비교하자!!
하지만, 이걸로는 그 값이 몇 번 나오는지 확인할 수 없다!!
그래서 나온 건 remove 혹은 pop을 할 수 있는 자료구조를 사용하자는 것!!
ArrayList 구조를 사용하여
- add()
- contains()
- remove()
사용하여 코드를 작성하자!!!!
- 입력값 s를 ArrayList에 넣기 (add()함수 사용)
- t 값을 하나하나 살펴보면서 ArrayList에 포함하는지 확인하기 (contains() 사용)
- 포함한다면, 해당 요소를 remove 해주기 (개수를 따지기 위함!!!)
이렇게 코드가 완성되었다!!!!
LeetCode 릿코드
SUBMIT 결과 !!!!
ACCEPTED !!!!!!!
스터디하면서 얻은 것들
- s와 t 모두 sort() 한 후에 비교하는 방법이 있다!!
- 배열에 두고 개수를 확인하면서 하는 방법이 있다!!
오늘의 스터디는
이렇게
끝 !!!!!!!!!!!!!!!!!!!!!!!