2.字母异位词分组
本文最后更新于381 天前,其中的信息可能已经过时,如有错误请发送邮件到2278221697@qq.com

题目很简单:

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

示例 1:

输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]

输出: [[“bat”],[“nat”,”tan”],[“ate”,”eat”,”tea”]]

解释:

  • 在 strs 中没有字符串可以通过重新排列来形成 "bat"
  • 字符串 "nat" 和 "tan" 是字母异位词,因为它们可以重新排列以形成彼此。
  • 字符串 "ate" ,"eat" 和 "tea" 是字母异位词,因为它们可以重新排列以形成彼此。

示例 2:

输入: strs = [“”]

输出: [[“”]]

示例 3:

输入: strs = [“a”]

输出: [[“a”]]

提示:

  • 1 <= strs.length <= 104
  • 0 <= strs[i].length <= 100
  • strs[i] 仅包含小写字母

解题思路:

这题思路非常明确,对于每个字串,只需要考虑字母组成不需要考虑其位置。那我的思路就是:设置一个26小写字母的计数器,对于每个字符进行计数,最后根据小写字母的顺序将每个字母的个数拼接成字符串。将拼接好的字符串用map结构接收,作为key,而value是具有该编码的字符串集,最后合并结果集即可。直接上代码:

class Solution {
public:
    string countChar(string str) {
        map<char, int> maps;
        
        for (char i = 'a'; i <= 'z'; i++) {
            maps[i] = 0;
        }
        for (int i = 0; i < str.length(); i++) {
            maps[str[i]]++;
        }
        string res = "";
        for (map<char, int>::iterator it = maps.begin(); it != maps.end(); it++) {
            
            res += char(it->second+'0');
        }
        return res;
    }
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        vector<vector<string>> res;
        map<string, vector<string>> maps;
        for (int i = 0; i < strs.size(); i++) {
            string str = countChar(strs[i]);
            if (maps.find(str) == maps.end()) {
                vector<string> arr;
                arr.push_back(strs[i]);
                maps[str] = arr;
            }
            else {
                maps[str].push_back(strs[i]);
            }
        }
        for (map<string, vector<string>>::iterator it = maps.begin(); it != maps.end(); it++) {

            res.push_back(it->second);
        }
        return res;
    }
};

其中countChar()方法用于对字符串计数并返回编码,但该算法复杂度较高,暂时还未细究原因:

最后是原题链接:49.字母异位词分组

TheFool:2278221697@qq.com
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇