华为机试—统计字符次数
手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。
例子:
输入:aaabbbccc
输出:a 3
b 3
手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。
例子:
输入:aaabbbccc
输出:a 3
b 3
c 3
package com.soft.wk;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 华为机试—统计字符次数
* @author lim.jong.uk
* 时间:2015-04-08 9:00
*
*/
public class CalculationCharacterCount {
public static void main(String[] args) throws IOException {
/**
* 整体思维:利用map的键值对唯一性,利用key值存储字符,利用value存储出现的次数
*/
long startTime = System.currentTimeMillis();
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一串小写字母字符串:");
String str = in.readLine();
String trim = str.trim();
Map<Object,Integer> map = new HashMap<Object,Integer>();
if(trim != null && !"".equals(trim)){
boolean flag = isEnglish(trim);
if(flag){
for(int i = 0;i<trim.length();i++){
char ch = trim.charAt(i);
//如果包含则加1
if(map.containsKey(ch)){
int value = map.get(ch);
map.put(ch, value + 1);
}else{
map.put(ch, 1);
}
}
for(Map.Entry<Object, Integer> entry:map.entrySet()){
System.out.println(entry.getKey() + "出现的次数:" + entry.getValue());
}
}else{
System.out.println("输入的不全是小写字母!");
}
}
long endTime = System.currentTimeMillis();
System.out.println("耗费时间:" + (endTime - startTime) +"毫秒");
}
/**
* 判断是否全部是小写字母
* @param english
* @return
*/
public static boolean isEnglish(String english){
String regex = "^[a-z]+$";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(english);
if(!m.matches()){
return false;
}
return true;
}
}
程序没有经过太多的测试例子,欢迎指出写的不好的地方。