(Leetcode) [String] Valid anagram
Topic: String
Difficulty: Easy
Question
Given two strings s
and t
, return true if t
is an anagram of s
, and false
otherwise.
anagram: a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Solution
10๋ถ๋ ์ ๊ฑธ๋ ค์ ํ์๋ค. ์ด๋ฐ ๋ ์ด ์ค๋ค๋.
Anagram์ด๋ ์ํ๋ฒณ์ ์ข ๋ฅ์ ๊ฐฏ์๋ ๋๊ฐ์ง๋ง ์์๊ฐ ์๋ก ๋ค๋ฅธ ๋จ์ด๋ฅผ ๋ปํ๋ ๋จ์ด์ด๋ค. ๋ ๊ฐ์ ๋ฌธ์์ด์ด anagram์ธ์ง ํ์ธํ๋ ค๋ฉด ๋ชจ๋ ์ํ๋ฒณ์ ์ข ๋ฅ๊ฐ ๊ฒน์น๋์ง, ๋ ๊ฐ ์ํ๋ฒณ์ ๊ฐฏ์๊ฐ ๊ฐ์์ง๋ฅผ ํ์ธํ๋ฉด ๋๋ค.
- ์ผ๋จ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฉด ์ ๋ anagram์ด ๋ ์ ์์ผ๋ฏ๋ก ์ฒซ๋ฒ์งธ ์ค์์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ํ์ธํด์คฌ๋ค.
- ํฌ๊ธฐ๊ฐ 26์ธ ๋ ๊ฐ์ ๋ฐฐ์ด์ ํ์ฑํด์ ๊ฐ ์ํ๋ฒณ์ ๊ฐฏ์๋ฅผ ํ์ํ๋ค. ๋ฌธ์์ด์์ ๊ฐ ์ํ๋ฒณ์
a
๋ฅผ ๋นผ์ค์ผ๋ก์จ a์ index=0, b์ index=1, โฆ , z์ index=26์ด ๋๋ค. - ๋ฃจํ๋ฅผ ๋๋ ค์ ๋ ๋ฐฐ์ด์ element๊ฐ ๋ชจ๋ ๊ฐ์์ง ํ์ธํ์ฌ ์์ ํ ๊ฐ์ผ๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฆฌํดํ๋ค.
bool isAnagram(string s, string t) {
if (s.length() != t.length())
return false;
int arr1[26] = { };
int arr2[26] = { };
for (int i=0; i<s.length(); i++) {
arr1[s[i]-'a']++;
arr2[t[i]-'a']++;
}
for (int j=0; j<26; j++) {
if (arr1[j] != arr2[j])
return false;
}
return true;
}
์ค๋์ ๋ ํผ๋ฐ์ค ์์~!
Leave a comment