同理寻找第一个出现次数最少的字符,一次循环的还没想好
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* Created by zfr on 2018/08/05.
* 寻找第一个出现次数最少的字符
*/
public class Solution {
public static void main(String[] args) {
// TODO Auto-generated method stub
Solution a = new Solution ();
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
if(str == null || str.length() == 0 ){
System.out.println("输入有误!");
return;
}
System.out.println(a.cal1(str));
System.out.println(a.cal2(str));
}
///三次循环
private char cal1(String str) {
Map<Character,Integer> map = new HashMap<>();
char[] ch = str.toCharArray();
for (int i = 0;i<ch.length;i++) {
if(map.containsKey(ch[i])){
map.put(ch[i],map.get(ch[i])+1);
}else {
map.put(ch[i],1);
}
}
int count = Integer.MAX_VALUE;
for (Map.Entry<Character,Integer> entry:map.entrySet()) {
count = Math.min(count,entry.getValue());
}
for(char c : ch){
if(map.get(c) == count ){
return c ;
}
}
return ch[0];
}
//两次循环
private char cal2(String str) {
Map<Character,Integer> map = new HashMap<>();
char[] ch = str.toCharArray();
for (int i = 0;i<ch.length;i++) {
if(map.containsKey(ch[i])){
map.put(ch[i],map.get(ch[i])+1);
}else {
map.put(ch[i],1);
}
}
int index = Integer.MAX_VALUE ;
char minChar = ch[0];
for(int i = 0 ;i<ch.length;i++){
if(map.get(ch[i]) < index ){
index = map.get(ch[i]);
minChar = ch[i] ;
}
}
return minChar;
}
}