반응형
문제
Given two strings s and t, return true if t is an anagram of s, and false otherwise.
s와 t string의 char들이 순서만 바뀐거라면 true 아니면 false
예시
s = anagram과 t = nagaram을 넣었을때 true인 이유는,
s | t | |
a | 3 | 3 |
n | 1 | 1 |
g | 1 | 1 |
r | 1 | 1 |
m | 1 | 1 |
각 char들의 갯수가 똑같으면 위치만 바뀐것이기때문에 true
이번 문제에서는 s와 t를 각각 hashmap으로 만들어서 두 hashmap이 가지고있는 key값과 value값이 같으면 true를 반환하여 문제를 풀어보겠습니다.
풀이
class Solution {
fun isAnagram(s: String, t: String): Boolean {
//두 string을 위한 빈 hashmap 생성
val hashMap_S = hashMapOf<Char,Int>()
val hashMap_T = hashMapOf<Char,Int>()
//각 hashmap에 string에 char들을 넣어줍니다.
for (i in 0 until s.length){
var string = s[i] //i위치에있는 string가져오기
hashMap_S[string] = hashMap_S.getOrDefault(string,0)+1
// hashMap_S[String]은 hashmap[키값]를 넣어줬습니다. value값을 리턴합니다.
//그리고 = 을 써줬기때문에 그 value는 hashMap_S.getOrDefault(string, 0)+1 값으로 바꿉니다.
//getOrDefault는 string값이 없다면 key는 string, value는 0으로 넣어주라는 뜻입니다.
//이미 key값이 있다면 value에 1을 더해주게 됩니다.
//map의 특성상 같은 key값은 여러개 있을수없습니다.
}
// 위와 같은방식
for(i in 0 until t.length){
var string = t[i]
hashMap_T[string] = hashMap_T.getOrDefault(string,0)+1
}
//각 hashmap이 만들어졌으므로 같으면 TRUE를 반환하고 다르면 FALSE
return hashMap_S.equals(hashMap_T)
}
}
반응형