LeetCode-数组-1002 有序数组的平方

查找常用字符
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,
则需要在最终答案中包含该字符 3 次。
你可以按任意顺序返回答案。
示例 1:
输入:["bella","label","roller"]
输出:["e","l","l"]
示例 2:
输入:["cool","lock","cook"]
输出:["c","o"]
思路:给每组字符串,建立26维度数字,统计a-z出现个个数,最后求a-z的min
对于 ["bella","label","roller"] ,画图 ! ! !
a b .... e ................. l ... o.....r
A[0] 1 1 1 2 0 0
A[1] 1 1 1 2 0 0
A[2] 0 0 1 2 1 1

vector<string> commonChars(vector<string>& A) 
{
	//每个字符串,申请26长度的数组,统计abcd...出现次数
	vector<string> res;
	int a[A.size()][26] = {0};//数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值。对于基本类型int来说,当然就是补int()即0了
	for(int i= 0; i< A.size(); i++)
		for(int j=0; j< A[i].size(); j++)
		{
			char k = A[i][j];
			a[i][k - 'a'] +=1;
		}
	// 用min[26] 来记录每一个字母对应A[0],A[1]...的最小值
	int min[26];
	for(int i=0;i<26;i++)
	{
		for(int k=0;k<A.size();k++)
		{
			if(k==0)
			min[i] = a[k][i];
			else
			{
				if(min[i]>a[k][i])
					min[i] = a[k][i];
			}
		}
	}
	// 遍历每一个字符
	for(int i=0; i< 26; i++)
	{
		// 如果最小值不为0 ,说明有公共的字母,将其转换为字符
		if(min[i]!=0)
		{
			stringstream stream;
			string st;
			for(int k=0;k<min[i];k++)
			{
				char c = i+'a';
				stream.clear();
				stream << c;
				stream >> st;
				res.push_back(st);
			}
		}
	}
	return res;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值