java 字符串数组如何去掉相同元素
string[]a={"aabccc","bbdf","ddeeg"}只要一个字母出现在两个以上的字符串中就把它去掉最后变成aaccc,f,eeg...
string[] a={"aabccc","bbdf","ddeeg"}
只要一个字母出现在两个以上的字符串中 就把它去掉
最后变成 aaccc,f,eeg 展开
只要一个字母出现在两个以上的字符串中 就把它去掉
最后变成 aaccc,f,eeg 展开
2个回答
展开全部
public static void main(String[] args) {
String[] a={"aabccc","bbdf","ddeeg"};
String[] result=new String[a.length];
Set<String> uniqChar = new HashSet<String>();
Map<String, Integer> timeMap = new HashMap<String, Integer>();
//使用set存放出现的所有字母
for(String aa:a){
for(int j=0;j<aa.length();j++){
if(!uniqChar.contains(aa.charAt(j))){
uniqChar.add(aa.charAt(j)+"");
}
}
}
//使用map记录每个字母在多少个字符串中出现
for(String s:uniqChar){
int times = 0;
for(String aa:a){
if(aa.contains(s)){
times++;
}
}
timeMap.put(s, times);
}
//过滤掉出现次数大于1次的字母
for(String key:timeMap.keySet()){
//System.out.println("key:"+key);
if(timeMap.get(key) > 1){
//System.out.println("big than one key:"+key);
for(int i=0;i<a.length;i++){
a[i] = a[i].replace(key,"");
}
}
}
System.out.println(timeMap);
for(String aa:a){
System.out.print(aa);
}
}
String[] a={"aabccc","bbdf","ddeeg"};
String[] result=new String[a.length];
Set<String> uniqChar = new HashSet<String>();
Map<String, Integer> timeMap = new HashMap<String, Integer>();
//使用set存放出现的所有字母
for(String aa:a){
for(int j=0;j<aa.length();j++){
if(!uniqChar.contains(aa.charAt(j))){
uniqChar.add(aa.charAt(j)+"");
}
}
}
//使用map记录每个字母在多少个字符串中出现
for(String s:uniqChar){
int times = 0;
for(String aa:a){
if(aa.contains(s)){
times++;
}
}
timeMap.put(s, times);
}
//过滤掉出现次数大于1次的字母
for(String key:timeMap.keySet()){
//System.out.println("key:"+key);
if(timeMap.get(key) > 1){
//System.out.println("big than one key:"+key);
for(int i=0;i<a.length;i++){
a[i] = a[i].replace(key,"");
}
}
}
System.out.println(timeMap);
for(String aa:a){
System.out.print(aa);
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询