给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。
例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。
你可以按任意顺序返回答案。
示例 1:
输入:["bella","label","roller"]
输出:["e","l","l"]
示例 2:
输入:["cool","lock","cook"]
输出:["c","o"]

  1. 1 <= A.length <= 100
  2. 1 <= A[i].length <= 100
  3. A[i][j] 是小写字母

思路:第一步:每个字符串都是由26个字符构成,所以我们定义两个整型数组arr(表示最后统计每个字符出现的次数)和array(表示每一个字符串中字符出现的个数),将arr数组初始化为100,array初始化为0;

第二步:遍历字符数组s,统计该字符串中每个字符出现个数,赋给array(每次统计前将array初始化为0),最后将arr[i] = Math.min(array[i],arr[i]) (由于我们只统计每个字符在每个字符串中出现的次数,所以要取最小值);

第三步:对arr数组进行遍历,把每个字符添加list集合中;

代码如下:

public static List<String> commonChars(String[] s) {
//定义并初始化两个数组arr和array
int[] arr = new int[26];
int[] array = new int[26];
for(int i = 0;i<26;i++) {
arr[i] = 100;
array[i] = 0;
}
for(String str : s) {
//初始化array
for(int i = 0;i<26;i++) {
array[i] = 0;
}
//统计每个字符出现的次数
for(int i = 0;i<str.length();i++) {
++array[str.charAt(i) - 'a'];
}
//统计每个字符在当前字符串之前所有字符串出现的次数,以出现最少次数为标准赋值
for(int i = 0;i<26;i++) {
arr[i] = Math.min(arr[i], array[i]);
}
}
List<String> list = new ArrayList<String>();
//遍历arr
for(int i = 0;i<26;i++) {
//j<arr[i] 判断每个字符出现个数,然后进行添加
for(int j = 0;j<arr[i];j++) {
String ch = "";
ch+=(char)('a'+i);
list.add(ch);
}
}
return list;
}

最新文章

  1. C标准头文件&lt;errno.h&gt;
  2. Android签名机制
  3. alter和alert防错?
  4. 计算机视觉(Computer Version,CV)、模式识别、人工智能
  5. three.js 之旅 (二)
  6. poj 3259 Wormholes
  7. JavaScript随笔记(一)基础概念以及变量类型
  8. 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类
  9. supervisor:进程管理工具
  10. sass---Sass混合宏、继承、占位符
  11. Gradle之恋-命令行详解
  12. 基于Avocado 的 QData MySQL自动化测试.md
  13. CSS相关
  14. 统一流控服务开源-1:场景&amp;业界做法&amp;算法篇
  15. 生活英语读写MOOC-Literature Tutor-有声名著阅读推荐
  16. 利用BGP虚拟下一跳实现链路负载均衡
  17. yum与rpm的区别以及详细介绍
  18. oracle 导入DMP文件时IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件 IMP-00000: 未成功终止导入
  19. 20175316盛茂淞 迭代和JDB
  20. shell脚本中 if 判断时候-s是什么意思

热门文章

  1. 7)django-示例(cbv)
  2. 不能够连接到主机(名称为localhost)上的MySQL服务”
  3. 【Linux】添加DNS
  4. kernel_size
  5. 第八周学习总结-C#、C++
  6. OrCAD Capture CIS 为库里的元器件添加新属性
  7. C++ GetModuleFileName()
  8. SSM + Android 网络文件上传下载
  9. JS脚本计算从某日凌晨开始,经过了多长时间
  10. 使用tensorflow构造隐语义模型的推荐系统