当前位置: 首页 > news >正文

(LeetCode 49)Anagrams

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

题目:

给一组字符串,返回所有满足Anagrams(回文构词法)的字符串;

Anagrams是指由颠倒字母顺序组成的单词,比如“dormitory”颠倒字母顺序会变成“dirty room”,“tea”会变成“eat”。

回文构词法有一个特点:单词里的字母的种类和数目没有改变,只是改变了字母的排列顺序。

思路:

满足Anagrams的字符串中的字符种类和数目都一样,如果对字符串排序,那么他们必定是相等,于是可以想到通过Hash表来判断该字符串是否出现过,如果出现过,即满足Anagrams;

需要考虑的是出现三个或三个以上的判断条件,这时数组式的hash表已无法满足,因此可以采用map<string,int>,通过key-value的形式来记录;

当string没有出现过,则对应的value为字符串数组的下表i,即map[string]=i;

当string已出现过一次,则对应的value可以设为-1,并输出该对应的字符串,即map[string]=-1;

当string出现过一次以上,即map[string]==-1,则直接输出该s对应的字符串;

代码:

class Solution {
public:
    vector<string> anagrams(vector<string>& strs) {
        vector<string> result;
        int len=strs.size();
        if(len<2)
            return result;
        
        map<string,int> anagrams;
        string aStr;
        for(int i=0;i<len;i++){
            aStr=strs[i];
            sort(aStr.begin(),aStr.end());
            if(anagrams.find(aStr)==anagrams.end())
                anagrams[aStr]=i;
            else{
                if(anagrams[aStr]>=0){
                    result.push_back(strs[anagrams[aStr]]);
                    anagrams[aStr]=-1;
                }
                result.push_back(strs[i]);
            }
        }
    }
};

转载于:https://www.cnblogs.com/AndyJee/p/4693836.html

相关文章:

  • Linux压缩指令
  • havok之thread和memory system
  • 【后缀自动机】ZOJ3891、HDU5343
  • linux下一个C语言要求CPU采用
  • how hard to say goodbye to you
  • [hdu4622 Reincarnation]后缀数组
  • I学霸官方免费教程三十二:Java集合框架之Set集合
  • Spark RDD Operations(1)
  • XE3随笔7:可以省略的双引号
  • Cocos2d-x 2.3.3版本 FlappyBird
  • LeetCode Implement Stack using Queues
  • Web前端学习-第六课HTML篇
  • C# 跨线程呼叫控制
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • Unity3d之流光效果
  • [数据结构]链表的实现在PHP中
  • CSS中外联样式表代表的含义
  • css属性的继承、初识值、计算值、当前值、应用值
  • idea + plantuml 画流程图
  • IOS评论框不贴底(ios12新bug)
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Median of Two Sorted Arrays
  • Promise初体验
  • Spark学习笔记之相关记录
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 阿里云前端周刊 - 第 26 期
  • 大快搜索数据爬虫技术实例安装教学篇
  • 翻译:Hystrix - How To Use
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 漂亮刷新控件-iOS
  • 学习JavaScript数据结构与算法 — 树
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 智能网联汽车信息安全
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • Prometheus VS InfluxDB
  • 湖北分布式智能数据采集方法有哪些?
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (C语言)逆序输出字符串
  • (python)数据结构---字典
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转) Face-Resources
  • (转)http协议
  • (转)可以带来幸福的一本书
  • ***测试-HTTP方法
  • ***通过什么方式***网吧