力扣(LeetCode)算法_C++——移位字符串分组

给定一个字符串,对该字符串可以进行 "移位" 的操作,也就是将字符串中每个字母都变为其在字母表中后续的字母,比如:"abc" -> "bcd"。这样,我们可以持续进行 "移位" 操作,从而生成如下移位序列:

"abc" -> "bcd" -> ... -> "xyz"

给定一个包含仅小写字母字符串的列表,将该列表中所有满足 "移位" 操作规律的组合进行分组并返回。

示例:

输入:["abc", "bcd", "acef", "xyz", "az", "ba", "a", "z"]

输出:

[

["abc","bcd","xyz"],

["az","ba"],

["acef"],

["a","z"]

]

解释:可以认为字母表首尾相接,所以 'z' 的后续为 'a',所以 ["az","ba"] 也满足 "移位" 操作规律。

cpp 复制代码
    vector<vector<string>> groupStrings(vector<string>& strings) {
        unordered_map<string, vector<string>> mp;
        vector<vector<string>> ans;

        for (auto& str: strings)
        {
            string key(str);
            for (auto& c: key)
            {
                c = (c - str[0] + 26) % 26 + 'a';
            }
            mp[key].push_back(str);
        }

        
        for (auto& m: mp)
        {
            ans.push_back(m.second);
        }

        return ans;
    }
相关推荐
AI技术控21 分钟前
计算机视觉算法实战——驾驶员安全带检测
人工智能·算法·计算机视觉
SharkWeek.2 小时前
【力扣Hot 100】普通数组2
数据结构·算法·leetcode
敲上瘾2 小时前
动静态库的制作与使用(Linux操作系统)
linux·运维·服务器·c++·系统架构·库文件·动静态库
Uitwaaien542 小时前
51单片机——按键控制LED流水灯
c++·单片机·嵌入式硬件·51单片机
漫漫进阶路6 小时前
VS C++ 配置OPENCV环境
开发语言·c++·opencv
XianxinMao10 小时前
RLHF技术应用探析:从安全任务到高阶能力提升
人工智能·python·算法
hefaxiang10 小时前
【C++】函数重载
开发语言·c++·算法
花生树什么树10 小时前
下载Visual Studio Community 2019
c++·visual studio·vs2019·community
exp_add310 小时前
Codeforces Round 1000 (Div. 2) A-C
c++·算法
练小杰11 小时前
Linux系统 C/C++编程基础——基于Qt的图形用户界面编程
linux·c语言·c++·经验分享·qt·学习·编辑器