博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode: Anagrams(颠倒字母而成的字)
阅读量:6696 次
发布时间:2019-06-25

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

题目

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

Note: All inputs will be in lower-case.

 

思路

1. 使用数组模拟哈希表, 数组下标0-25分别代表字符'a'-'z', a[0] 代表 'a' 在单词中出现的次数

2. 排序, 只有相邻的单词才有可能是相同的

3. 这么慢的方法没想到 176ms 就能通过

 

总结

1. word 起初没有对 char 数组初始化, 结果 VS 成功运行, 但 Leetcode 上却是 WA. VS 真是宠坏一批程序员

 

代码

class word {public:	word() {		memset(chars, 0, sizeof(chars));		index = 0;	}	int chars[26];	int index;	bool operator<(const word &ths) const {		for(int i = 0; i < 26; i ++) {			if(this->chars[i] != ths.chars[i]){				return this->chars[i] < ths.chars[i];			}		}		return this->index < ths.index;	}	bool operator==(const word &ths) const {		for(int i = 0; i < 26; i ++) {			if(this->chars[i] != ths.chars[i]) {				return false;			}		}		return true;	}};class Solution {public:    vector
anagrams(vector
&strs) { vector
record; for(int i = 0; i < strs.size(); i ++) { record.push_back(buildWord(strs[i], i)); } sort(record.begin(), record.end()); vector
res; bool flag = false; for(int i = 1; i < record.size(); i ++) { if(record[i] == record[i-1]) { if(!flag) { res.push_back(record[i-1]); res.push_back(record[i]); flag = true; }else{ res.push_back(record[i]); } }else{ flag = false; } } return decomposition(res, strs); } word buildWord(const string &str, const int &index) { word newword; for(int i = 0; i < str.size(); i ++) { newword.chars[str[i]-'a'] ++; } newword.index = index; return newword; } vector
decomposition(vector
&vec, vector
&strs) { vector
res; for(int i = 0; i < vec.size(); i++) { res.push_back(strs[vec[i].index]); } return res; }};

  

转载地址:http://dlpoo.baihongyu.com/

你可能感兴趣的文章
【linux】学习6
查看>>
用UltraISO制作的u盘ubuntu11.04,启动失败解决方案
查看>>
<audio> 标签简介
查看>>
Atitit.web预览播放视频的总结
查看>>
自动布局
查看>>
【转】功能测试的经验总结
查看>>
【转】每天一个linux命令(39):grep 命令
查看>>
【百度地图API】如何制作班级地理通讯录?LBS通讯录
查看>>
c# event Action 判断事件列表中是否存在这个委托
查看>>
Oracle初始化参数之memory_target
查看>>
java.util.zip - Recreating directory structure(转)
查看>>
无需写try/catch,也能正常处理异常
查看>>
(原创)优酷androidclient 下载中 bug 解决
查看>>
Web 前端攻防(2014版)-baidu ux前端研发部
查看>>
[歪谈]拽一个贵人出来给你"当炮架子"
查看>>
用TextPaint来绘制文字
查看>>
iOS开发-Get请求,Post请求,同步请求和异步请求
查看>>
关于 ioctl 的 FIONREAD 參数
查看>>
[翻译] IQAudioRecorderController
查看>>
Linux命令-目录处理命令:mkdir
查看>>