Algorithm
HackkerRank - Find the Median, Palindrome Index, Anagram, Making Anagrams
HI2
2021. 3. 16. 00:47
[풀이 - Find the Median] : <Easy / 89.35%>
더보기
int findMedian(vector<int> arr)
{
sort(arr.begin(), arr.end());
int idx = arr.size() / 2;
return arr[idx];
}
[풀이 - Palindrome Index] : <Easy / 66.69%>
더보기
bool IsPalindrome(string s)
{
int l = s.length();
for(int i = 0; i < (l / 2); ++i)
{
int r = l-1-i;
//
if(s[i] != s[r])
return false;
}
//
return true;
}
//
int palindromeIndex(string s)
{
int l = s.length();
int result = -1;
//
int i = 0, r = 0;
for(; i < (l / 2); ++i)
{
r = l-1-i;
//
if(s[i] != s[r])
break;
}
//
string temp = s.erase(i, 1);
if(IsPalindrome(temp))
result = i;
else
result = r;
//
return result;
}
[풀이 - Anagram] : <Easy / 89.05%>
더보기
int anagram(string s)
{
int result = 0;
int l = s.length();
//
if(l % 2 == 1)
return -1;
//
int halfCount = l/2;
string s1 = s.substr(0, halfCount);
string s2 = s.substr(halfCount, l);
//
int m[26] = {0};
for(int i = 0; i < halfCount; ++i)
{
int idx = s1[i]-'a';
m[idx]++;
}
//
for(int i = 0; i < halfCount; ++i)
{
int idx = s2[i]-'a';
if(m[idx] == 0)
++result;
else
--m[idx];
}
//
return result;
}
[풀이 - Making Anagrams] : <Easy / 93.03%>
더보기
int makingAnagrams(string s1, string s2)
{
const int keyCount = 26;
int result = 0;
int arr[keyCount] = {0};
//
for(int i = 0; i < s1.length(); ++i)
{
int idx = s1[i] - 'a';
++arr[idx];
}
//
for(int i = 0; i < s2.length(); ++i)
{
int idx = s2[i] - 'a';
--arr[idx];
}
//
for(int i = 0; i < keyCount; ++i)
result += abs(arr[i]);
//
return result;
}