面試中遇到的一個題,在這里寫一個自己的實現方法
import java.util.Collections;
import java.util.Map;
import java.util.TreeMap;
public class countStr {
public static void main(String[] args) {
String str = "eabcdssasbccdddddsesssaaa";
countStr(str);
}
public static void countStr(String str){
String tempStr = null;
Map<String, Integer> map = new TreeMap<String, Integer>();
//利用Map的“key是不能重復的,如果重復則覆蓋之前的內容”的特點,只需遍歷一次即可完成
for(int i=0;i<str.length();i++){
tempStr = str.substring(i, i+1);
map.put(tempStr, getMapNull(map.get(tempStr))+1);
}
int max = Collections.max(map.values());
int min = Collections.min(map.values());
System.out.println("字符串中出現最多的次數是:"+max+"次");
System.out.println("字符串中出現最少的次數是:"+min+"次");
}
//當map中還沒有存入某個字符x時,讓map.get("x")返回零值
public static Integer getMapNull(Object o){
if(o==null)
return new Integer(0);
return (Integer) o;
}
}
輸出結果:import java.util.Map;
import java.util.TreeMap;
public class countStr {
public static void main(String[] args) {
String str = "eabcdssasbccdddddsesssaaa";
countStr(str);
}
public static void countStr(String str){
String tempStr = null;
Map<String, Integer> map = new TreeMap<String, Integer>();
//利用Map的“key是不能重復的,如果重復則覆蓋之前的內容”的特點,只需遍歷一次即可完成
for(int i=0;i<str.length();i++){
tempStr = str.substring(i, i+1);
map.put(tempStr, getMapNull(map.get(tempStr))+1);
}
int max = Collections.max(map.values());
int min = Collections.min(map.values());
System.out.println("字符串中出現最多的次數是:"+max+"次");
System.out.println("字符串中出現最少的次數是:"+min+"次");
}
//當map中還沒有存入某個字符x時,讓map.get("x")返回零值
public static Integer getMapNull(Object o){
if(o==null)
return new Integer(0);
return (Integer) o;
}
}
字符串中出現最多的次數是:7次
字符串中出現最少的次數是:2次