博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Anagrams
阅读量:6097 次
发布时间:2019-06-20

本文共 1231 字,大约阅读时间需要 4 分钟。

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

Note: All inputs will be in lower-case.

思路:

最开始不理解题意。其实题目的意思是看原数组里面是否有些字符串是互相可以通过改变字母顺序转换的。这样的话使用一个map<string, int>,字符串作为key值,保存下标。遍历原数组,每访问一个字符串,先对它进行排序,看map是否有它,如果有的话,就存入结果vector,否则存入map。注意需要一个标记来记录第一个放入map的字符串是否放入结果,放入之前是字符串的下标,放入后改为-1.

代码:

1     vector
anagrams(vector
&strs) { 2 // IMPORTANT: Please reset any member data you declared, as 3 // the same Solution instance will be reused for each test case. 4 vector
result; 5 map
table; 6 string tmp; 7 int n = strs.size(); 8 for(int i = 0; i < n; i++){ 9 tmp = strs[i];10 sort(tmp.begin(), tmp.end());11 if(table.find(tmp) == table.end()){12 table[tmp] = i;13 }14 else{15 if(table[tmp] != -1){16 result.push_back(strs[table[tmp]]);17 table[tmp] = -1;18 }19 result.push_back(strs[i]);20 }21 }22 return result;23 }

 

转载于:https://www.cnblogs.com/waruzhi/p/3418415.html

你可能感兴趣的文章
redo、undo、binlog的区别
查看>>
DropDownList 控制日期控件显示格式
查看>>
RecycleView设置顶部分割线(记录一个坑)
查看>>
【设计模式系列】单例模式的7种写法
查看>>
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
[转]无法安装MVC3,一直卡在vs10-kb2483190
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
web框架-(二)Django基础
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
Excel到R中的日期转换
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>