大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。

题目考察的知识点

  • 字符串的处理
  • 哈希表的应用
  • 排序算法

题目解答方法的文字分析

这道题目要求将具有相同字母构成的字符串分组合并,并且按照每组中第一个字符串的首字母顺序进行排序。我们可以使用哈希表来实现这个功能。

思路如下:

  1. 遍历输入的字符串数组,对每个字符串进行排序,并将排序后的字符串作为键,原始字符串作为值放入哈希表中。这样相同字母构成的字符串会被归类到同一个键下。
  2. 对哈希表的键进行排序,这样可以保证每组字符串按照第一个字符串的首字母顺序进行排序。
  3. 将同一组的元素合并成一个字符串,并用逗号隔开,然后将不同组的字符串用逗号连接起来,得到最终的结果。

举个例子:对于输入 ["eat", "tea", "tan", "ate", "nat", "bat"],首先对每个字符串进行排序,得到哈希表:

 "aet": ["eat", "tea", "ate"],
 "ant": ["tan", "nat"],
 "abt": ["bat"]

然后对哈希表的键进行排序,得到键的顺序为 ["aet", "ant", "abt"]。

接下来将同一组的元素合并成一个字符串,并用逗号隔开,得到最终结果:

["ate,eat,tea","bat", "nat,tan"]

本题解析所用的编程语言

C++

完整且正确的编程代码

#include <vector>
#include <string>
#include <unordered_map>
#include <algorithm>

using namespace std;

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param strs string字符串vector 
     * @return string字符串vector
     */
    vector<string> groupAnagrams(vector<string>& strs) {
        unordered_map<string, vector<string>> hashMap;

        // 对每个字符串进行排序,并将排序后的字符串作为键,原始字符串作为值放入哈希表中
        for (const string& str : strs) {
            string sortedStr = str;
            sort(sortedStr.begin(), sortedStr.end());
            hashMap[sortedStr].push_back(str);
        }

        vector<string> result;

        // 对哈希表的键进行排序
        vector<string> sortedKeys;
        for (auto it = hashMap.begin(); it != hashMap.end(); ++it) {
            sortedKeys.push_back(it->first);
        }
        sort(sortedKeys.begin(), sortedKeys.end());

        // 将同一组的元素合并成一个字符串,并用逗号隔开
        for (const string& key : sortedKeys) {
            vector<string>& group = hashMap[key];
            string combinedStr = "";
            for (int i = 0; i < group.size(); ++i) {
                combinedStr += group[i];
                if (i < group.size() - 1) {
                    combinedStr += ",";
                }
            }
            result.push_back(combinedStr);
        }

        return result;
    }
};

您的关注、点赞、收藏就是我创作的动力,三连支持阿Q!