14. Longest Common Prefix
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string prefix = "";
for( int i = 0 ; i < strs[0].size(); i++ ){
string first = strs[0];
for (auto s: strs){
if (i >= s.size()){
return prefix;
}
if (first[i] == s[i]){
continue;
} else {
return prefix;
}
}
prefix += first[i];
}
return prefix;
}
};
49. Group Anagrams
π Approach 1: Sorting (Most Intuitive)
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<vector<string>> ans;
unordered_map<string, vector<string>> um;
for(auto &&i : strs){
string sorted_str = i;
sort(sorted_str.begin(), sorted_str.end());
um[sorted_str].push_back(i);
}
for(auto &&i: um){
ans.push_back(i.second);
}
return ans;
}
};
π Approach 2: # Β Frequency Count (Optimal)
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
map<vector<int> ,vector<string>> um;
vector<vector<string>> ans;
for(auto &&i: strs)
{
vector<int> freq(26);
for(auto &&j: i)
freq[j-'a']++;
um[freq].push_back(i);
}
for(auto i: um) ans.push_back(i.second);
return ans;
}
};