问题是: 给定一个仅由小写字母组成的字符串数组 A,返回出现在列表中所有字符串(包括重复项)中的所有字符的列表。例如,如果一个字符在所有字符串中出现 3 次但没有出现 4 次,则您需要在最终答案中包含该字符 3 次。
您可以按任何顺序返回答案。
示例 1:
输入:["bella","label","roller"] 输出:["e","l","l"]
示例 2:
输入:["cool","lock","cook"] 输出:["c","o"]
注意:
1 <= A.length <= 100
1 <= A[i].length <= 100
A[i][j]是小写字母
这是我的代码:
class Solution {
public List<String> commonChars(String[] A) {
List<String> charArr = new ArrayList<>();
for(int i = 1; i<A.length ; i++){
A[0].replaceAll("[^" + A[i] + "]", "");
}
for(int i=0; i<A[0].length(); i++){
charArr.add(Character.toString(A[0].charAt(i)));
}
return charArr;
}
}
我得到的结果
输入: [“贝拉”,“标签”,“滚筒”]
输出: ["b","e","l","l","a"]
预期: [“e”,“l”,“l”]
显然字符没有被删除,谁能帮我解决这个问题?
最佳答案
不确定 java,但这是 python 中的第一个衬里
list(functools.reduce(lambda a,b: a&b, [Counter(c) for c in A]).elements())
>>> from collections import Counter
>>> import functools
>>> A = ["bella","label","roller"]
>>> list(functools.reduce(lambda a,b: a&b, [Counter(c) for c in A]).elements())
['e', 'l', 'l']
>>> A = ["cool","lock","cook"]
>>> list(functools.reduce(lambda a,b: a&b, [Counter(c) for c in A]).elements())
['c', 'o']
>>>
关于java - 力扣1002。查找字符串之间的共同字符-Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55050466/