换位词

换位词

http://www.nowcoder.com/questionTerminal/e84e273b31e74427b2a977cbfe60eaf4

思路:利用unordered_mapunordered_set

  • 前者保存根据字母排序后的单词以及对应的原始单词
  • 如果某一个原始单词已经插入结果,那么将其记录在unordered_set,防止重复插入

代码如下:

//
// Created by jt on 2020/9/29.
//
#include <vector>
#include <unordered_map>
#include <unordered_set>
#include <string>
using namespace std;

class Solution {
public:
    vector<string> anagrams(vector<string> &strs) {
        unordered_map<string, string> mp;
        unordered_set<string> added;
        vector<string> res;
        for (string str : strs) {
            string tmp = str;
            sort(tmp.begin(), tmp.end());
            if (mp.count(tmp)) {
                if (added.count(tmp) == 0) {
                    // 防止重复插入第一个换位词
                    res.push_back(mp[tmp]);
                    added.insert(tmp);
                }
                res.push_back(str);
            } else {
                mp[tmp] = str;
            }
        }
        return res;
    }
};
刷遍天下无敌手 文章被收录于专栏

秋招刷题历程

全部评论

相关推荐

02-11 17:47
已编辑
门头沟学院 Java
神哥不得了:神哥来啦~建议先在网上找一些高频的八股去背,然后再去广泛的背八股,这样的学习会更有效率一些,简历的这两个项目建议换掉,换成两个高质量的项目,这样的话获得面试的比例会更高一点,专业技能的话排版要注意一下,要加句号的话就都加,要不加就都不加,荣誉奖项的话写在教育经历里边吧,这个确实没有太多的含金量
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了问题或提升了什么性能指标来写会好些,如使用布隆过滤器实现了判断短链接是否存在,大大提升了查询速度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务