AcWing 781. 趣味字母卡片-java
原题链接
简单
作者:
单箭头
,
2019-05-14 22:03:15
,
所有人可见
,
阅读 879
java 代码
public class 趣味字母卡片 {
/**
* 这个题目就是每次事实上不知道到底去除其重复字母前面的那个还是后面的那个,是一个变化的。所以如果不断去判断去除不去除很麻烦,
* 那就暴力遍历。直接a~z开始遍历,假设a,先对于字符串中的字符进行统计次数,然后如果a前面的字母均可以被去除,即均a前面的字母
* 出现次数是大于1的。并且在遍历到a那个位置为止,并不是全部出现完了。
* @param args
*/
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str=sc.nextLine().toLowerCase();
char[] chars=str.toCharArray();
HashMap<Character,Integer> map=new HashMap<>();
for(char c:chars){
if(!map.keySet().contains(c)) map.put(c,1);
else map.put(c,map.get(c)+1);
}
boolean T=false;
for(char c='a';c<='z';c++){
HashMap<Character,Integer> map1=new HashMap<>(map);
if(!map1.keySet().contains(c)) continue;
for(int i=0;i<chars.length;i++){
char t=chars[i];
if(t==c) {
T=true;
break;
}
if(map1.get(t)==1) break;
map1.put(t,map1.get(t)-1);
}
if (T) {
System.out.println(c);
break;
}
}
}
}