题目:统计字符次数

来源:互联网 发布:编写高质量c语言代码 编辑:程序博客网 时间:2024/05/22 13:51
华为机试—统计字符次数
手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。
例子:
输入: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);//如果包含则加1if(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;}}


程序没有经过太多的测试例子,欢迎指出写的不好的地方。

0 0
原创粉丝点击