LeetCode1002(竞赛题):查找常用字符(给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。)
2019-03-04 19:35
477 查看
给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。
例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。你可以按任意顺序返回答案。
示例 1:
输入:["bella","label","roller"]
输出:["e","l","l"]
示例 2:
输入:["cool","lock","cook"]
输出:["c","o"]
总体思路:就是用字符串数组中的第一个字符串去和剩余的字符串比较,找出共有的字符,并计算出最小重复数量,再传到集合中去。
[code]import java.util.*; public class lianxi{ public static void main(String[] args){ Solution S = new Solution(); String[] A = {"bella","label","roller"}; List<String> list = S.commonChars(A); System.out.println(list); } } class Solution { public List<String> commonChars(String[] A) { List<String> list = new ArrayList<>(); for(int j = 0; j < A[0].length(); j++){ //遍历第一个字符串中的字符 int count = 0;//相同的字符最少重复几次 char c = 'a'; for(int i = 0; i < A.length-1; i++){ //遍历所有字符串 int a = rechecking(A[0].charAt(j),A[i]); int b = rechecking(A[0].charAt(j),A[i+1]); c = A[0].charAt(j); if(a==0||b==0){ //只要a和b等于一次0 直接跳出 将count置零 count =0; break; } if(count == 0){ //找出a和b最小的 if(a >= b){ count = b; } else{ count = a; } } else{ //count不等于0 那么就是 a,b,count 三个做比较,找出最小的 if(a >= b){ if(count > b){ count = b; } } else{ if(count > a ){ count = a; } } } } if(list.contains(String.valueOf(c)) == false && count > 0 ){ //判断字符是否已存在 while(count > 0){ list.add(String.valueOf(c)); count--; } } } return list; } public int rechecking(char chars, String s){ //用来比较每个字符串中有几个相同的字符 int count = 0; for(int i = 0; i < s.length(); i++){ if(chars == s.charAt(i)){ count++; } } return count; } }
相关文章推荐
- 字典序问题。在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1
- 字典序问题。在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1
- 返回由空格隔开的字符串中或数组元素中每个字符的第一个字符组成的字符串的前n个字符组合。
- 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 对于给定的一个字符串,统计其中数字字符出现的次数。输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 空格替换 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 给定一个字符串s由大小写字母和空白字符组成,返回字符串中最后一个字的长度。 如果最后一个字不存在,则返回0。
- 【剑指Offer-时间效率平衡】在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符。 给定一个字符串(不一定全为字母)A及它的长度n。请返回第一个重复出现的字符。保证字符串中有重复字符,字符串的长度小于等于500。
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- python title() upper() lower() 以首字母大写的方式显示每个单词/将字符串改为全部大写或全部小写
- 在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc
- 在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置
- 一个只由字母数字字符和破折号组成的字符串S. 该字符串被N个破折号分成N + 1个组。 给定数字K,使得每个组包含完全K个字符,除了第一个组可能少于K
- 3g:如何查找一个字符串中重复次数最多的字符,返回这个字符的个数和字符
- 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1