zoukankan      html  css  js  c++  java
  • 在一段英文字母中找出每个字母重复数量的方法(Java)

    首先需要了解下java的hashmap数据类型:

    hashmap是基于哈希表的Map接口的实现。hashmap有两个元素,一个是key(键名),一个是value(键值),就相当于一个字典了,和Python里的字典是一样的。

    在一段英文字母中找出每个字母重复数量的实现原理:

    将文字中出现的字母,作为键名(key),出现的次数作为键值(value),hashmap中的键名是不能重复的,那么统计这些字母的数量,就变成了统计这些相同键名的数量。

    实现方式可以是从第一个字母开始,把字母存到哈希表中去,第一个就是a:1,然后按顺序存第2个字母f:1,如果出现跟前面有的字母重复的话,前面字母的键值就+1,例如afa,遍历到第3个字母的时候,a的键值就变成了2,即a:2,如果遇到空格数字,标点符号,及其他特殊字符就排除掉,不插入,如果遇到标点符号也统计则不需要判断条件,全部都插入即可。

    代码如下:

     1 import java.util.HashMap;
     2 
    3 4 public class hashmap_examp { 5 6 public static void main(String[] args){ 7 HashMap<String,Integer> map = new HashMap<String,Integer>(); 8 String str="afashfjgjkhlnmash,^566*整数gshkjshgksdfsgdfhjk"; 9 for (int i=0;i<str.length();i++){ 10 char c=str.charAt(i); 11 String key=String.valueOf(c); 12 if(map.containsKey(key)){ 13 Integer value=map.get(key); 14 map.put(key, value+1); 15 } 16 else{ 17 //map.put(key, 1); 统计所有的字符,包括中文 18 if(c>='A'&&c<='Z'||c>='a'&&c<='z'){//利用ascii码去除字符串的数字,空格,标点符号,特殊字符 19 map.put(key, 1); 20 } 21 } 22 } 23 System.out.println(map); 24 } 25 }

     输出结果:

    {f=4, g=4, d=2, s=6, a=3, n=1, l=1, m=1, j=4, k=4, h=6}

  • 相关阅读:
    bzoj-2748 2748: [HAOI2012]音量调节(dp)
    bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
    bzoj-3444 3444: 最后的晚餐(组合数学)
    codeforces 709E E. Centroids(树形dp)
    codeforces 709D D. Recover the String(构造)
    codeforces 709C C. Letters Cyclic Shift(贪心)
    codeforces 709B B. Checkpoints(水题)
    codeforces 709A A. Juicer(水题)
    Repeat Number
    hdu 1003 Max Sum (动态规划)
  • 原文地址:https://www.cnblogs.com/sunshishi/p/4773077.html
Copyright © 2011-2022 走看看