leetcode_49题——Anagrams(string,hashtable,还用到了算法sort,迭代器)

Anagrams

Total Accepted: 33531 Total Submissions: 137666My Submissions

Question Solution

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

Note: All inputs will be in lower-case.

Hide Tags

Hash Table String

Have you met this question in a real interview?

Yes

No

Discuss

这道题,涉及到C++的模板与容器的很多的内容,在本题中,题目的意思是找到那些字符串的字母一样只是顺序不同的那些字符串

而这样的话,采用hash表来做,我是将排好序的字符串作为键,而原始的字符串作为值,再在hash表中进行查找,计数

#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<utility>//用到了pair的头文件
#include<algorithm>//用到了sort排序,的头文件
using namespace std;

vector<string> anagrams(vector<string> &strs) {
	multimap<string,string> temp;
	vector<string> result_str;
	string str_temp;
	string str_temp2;

	int i=0;
	int len=strs.size();
	while(i<len)
	{
		str_temp=strs[i];
		str_temp2=strs[i];
		sort(str_temp.begin(),str_temp.end());//将字符串进行排序
		//temp.insert(pair<string,string>(str_temp,strs));
		temp.insert(make_pair(str_temp,str_temp2));//将字符串排好序的做键值,原始的做值
		//temp.insert(multimap<string,string>::value_type(str_temp,strs));
		i++;
	}

	for(multimap<string,string>::iterator itr=temp.begin();itr!=temp.end();itr++)
	{
		if(temp.count(itr->first)>1)//查找所所有的键值个数多余1的的,将其值输出
			result_str.push_back(itr->second);
	}
	return result_str;
}

int main()
{
	string str1="asdf";
	string str2="fdas";
	string str3="dhfzxcx";
	string str4="etbd";
	vector<string> strs;
	strs.push_back(str1);strs.push_back(str2);strs.push_back(str3);strs.push_back(str4);

	vector<string> strs1;
	strs1=anagrams(strs);

	int i=0;
	int len=strs1.size();
	while(i<len)
	{
		cout<<strs1[i]<<endl;
		i++;
	}

	system("pause");
	return 1;

}

  

时间: 2024-10-13 23:24:01

leetcode_49题——Anagrams(string,hashtable,还用到了算法sort,迭代器)的相关文章

LeetCode算法题-Repeated String Match(Java实现)

这是悦乐书的第289次更新,第307篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第156题(顺位题号是686).给定两个字符串A和B,找到A必须重复的最小次数,使得B是它的子字符串. 如果没有这样的解决方案,返回-1.例如: 输入:A ="abcd",B ="cdabcdab". 输出:3 说明:因为重复A三次("abcdabcdabcd"),B是它的子串; 和B不是A重复两次的子串("abcdabcd&

LeetCode算法题-Rotate String(Java实现)

这是悦乐书的第317次更新,第338篇原创 在开始今天的算法题前,说几句,今天是世界读书日,推荐两本书给大家,<终身成长>和<禅与摩托车维修艺术>,值得好好阅读和反复阅读. 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是796).给定两个字符串A和B,在A上进行移位操作,规则是将A最左边的字符移动到最右边去.例如,如果A ='abcde',那么在A上移位一次后,它将是'bcdea'.当且仅当A在A上移位一定次数后可以变为B时返回True.

49. Group Anagrams (string, map)

Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat",

[LeetCode] 在一堆字符串中找出包含相同字符的 group的较快方法,题 Anagrams

题目: Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. class Solution { public: vector<string> anagrams(vector<string> &strs) { } }; 题意本身并不是很清晰,开始我的代码总是报Output Limit Exceeded,

微软校招编程题&quot;Beautiful String&quot;的状态机解法

昨天碰巧看到一道微软校招的编程题,题目大意如下: 如果一个字符串包括三组或者更多组的连续升序字母,每组长度相等,那么我们就称这个字符串是Beautiful String 如下是一些Beautiful String的例子: abc.cde.aabbcc.aaabbbccc 这些不是Beautiful String: abd.cba.aabbc.zab 输入一个只含有小写字母的字符串,如果它含有一个Beautiful的子串,就输出YES,否则输出NO 输入: 第一行是案例个数,之后的每一行是一个数字

16年蓝桥杯第七题_(string)

手链样式 小明有3颗红珊瑚,4颗白珊瑚,5颗黄玛瑙.他想用它们串成一圈作为手链,送给女朋友.现在小明想知道:如果考虑手链可以随意转动或翻转,一共可以有多少不同的组合样式呢? 请你提交该整数.不要填写任何多余的内容或说明性的文字. 一开始以为是搜索,发现不行,想了一会儿没有思路,看了题解...用了一个比较慢,但是想法简单的方法. 主要用了一些stl的函数, #include<iostream> #include<cstdio> #include<cstring> #inc

[编程题] 扫描透镜(本题还涉及如何从字符串中提取数字)

在N*M的草地上,提莫种了K个蘑菇,蘑菇爆炸的威力极大,兰博不想贸然去闯,而且蘑菇是隐形的.只 有一种叫做扫描透镜的物品可以扫描出隐形的蘑菇,于是他回了一趟战争学院,买了2个扫描透镜,一个 扫描透镜可以扫描出(3*3)方格中所有的蘑菇,然后兰博就可以清理掉一些隐形的蘑菇. 问:兰博最多可以清理多少个蘑菇? 输入描述: 第一行三个整数:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小; 接下来K行,每行两个整数x,y(1≤x≤N,1≤y≤M).代表(x,y)处提莫种了一个蘑菇.

2015 UESTC 搜索专题M题 Palindromic String 马拉车算法

Palindromic String Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Description 秋实大哥喜欢探索新鲜事物,最近他发明了一种新型回文串,叫K重回文串!今天他想用它来考考小朋友们. 秋实大哥给出了与K重回文串有关的信息 任何字符串都属于0重回文串,包括空字符串.    一个长度为N的字符串S,S是K(k≥1)重回文串,当且仅当S是回文串,且其长

Kotlin实现LeetCode算法题之String to Integer (atoi)

题目String to Integer (atoi)(难度Medium) 大意是找出给定字串开头部分的整型数值,忽略开头的空格,注意符号,对超出Integer的数做取边界值处理. 方案1 1 class Solution { 2 fun myAtoi(str: String): Int { 3 val maxInt = "2147483647" 4 val maxIntS = "+2147483647" 5 val minIntS = "-21474836