【leetcode】Anagrams

Anagrams

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

Note: All inputs will be in lower-case.

 
 
Anagrams:即字母个数和字母都相同,但是字母顺序不相同的词
 
e.g. "tea","and","ate","eat","dan".   return "and","dan","tea","ate","eat"
 
即找出vector中所有存在Anagrams的词
 
思路:
对每一个string中的字符进行重新排序,保存在map中
 
如果重复找到了某个元素,则说明该词是Anagrams的,把当前元素,和与之匹配的Anagrams元素保存到vector中
 
注意sort的使用
 
如果比较的元素可以用<号比较,则无需第三个参数,按照升序排列
如果比较的元素不可以用<号比较,则需要第三个参数比较函数
比较函数可以写成下面的形式:
static bool less_lower(char c1, char c2)
{
    return c1<c2;
}
注意,对于compare函数,两个元素相等时,需要返回false,否则会报错
 
复制代码
 1 class Solution {
 2 public:
 3     vector<string> anagrams(vector<string> &strs) {          
 4         int n=strs.size();
 5         string s;
 6         map<string ,int> strMap;          
 7         vector<string> result;
 8        
 9         for(int i=0;i<n;i++)
10         {
11             s=strs[i];
12             sort(s.begin(),s.end());
13             if(strMap.find(s)==strMap.end())
14             {
15                 strMap[s]=i;
16             }
17             else
18             {
19                 if(strMap[s]!=-1)
20                 {
21                     result.push_back(strs[strMap[s]]);
22                     strMap[s]=-1;
23                 }                  
24                 result.push_back(strs[i]);                  
25             }
26         }
27         return result;    
28     }
29 };
复制代码

 

posted @   H5开发技术  阅读(204)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示