码迷,mamicode.com
首页 > 其他好文 > 详细

输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和

时间:2018-11-13 22:39:07      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:字符串   line   字符   对应关系   多次   最大   family   span   generate   

题目描述:

输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和。

思路:

 

1.创建输入对象
2.输入字符串
3.利用正则将字母分离出,剩余的每一个字符串即为待统计的每一个数字,存入字符串数组中

4.遍历数组,拿到字符串,存入创建的hashMap中,且键为该字符串,值为出现的次数;这里我使用的判断出现几次的技巧是借助hashSet的存储非重复元素的性质,每次拿到数组元素时同时进行存入hashSet的操作(具体代码中会有)

4.此时的hashMap中存储的即为出现的数字及其出现次数的对应键值对集合,遍历集合,找出值为最大的那个键值对,即拿到出现次数最多的数字及其出现次数

5.打印输出

 

具体代码:

 

 1 package zhangchaolun.test
 2 
 3 import java.util.HashMap;
 4 import java.util.HashSet;
 5 import java.util.Scanner;
 6 
 7 public class test2 {
 8     public static void main(String[] args) {
 9         Scanner sc = new Scanner(System.in);
10         System.out.println("请输入一列字符串:");
11         String s1 = sc.nextLine();
12         String regex = "[a-zA-Z]+";
13         String[] arr1 = s1.split(regex);
14        
15         HashSet<String> hashSet = new HashSet<>();
16         HashMap<String, Integer> hashMap = new HashMap<>();
17       
18         for (int i = 0; i < arr1.length; i++) {
19             if (hashSet.add(arr1[i])) // 此存入方法返回布尔类型值
20                 // 能添加的元素即为第一次出现,执行存入map的操作;
21                 hashMap.put(arr1[i], 1);
22             else {
23                 int n = (int) hashMap.get(arr1[i]);//能添加则不是第一次出现,而map中也已有对应的键值对,更新其值加1即可
24                 hashMap.put(arr1[i], ++n);
25             }
26         }
27         // map里存储的是每个十进制数及其出现次数的键-值对应关系
28         findAndResult(hashMap);// 找出最大的Value
29     }
30 
31     private static void findAndResult(HashMap<String, Integer> hashMap) {
32         // TODO Auto-generated method stub
33         String mostly = " ";
34         int times = 0;
35         for (String s : hashMap.keySet()) {
36             if (hashMap.get(s) > times) {
37                 times = hashMap.get(s);
38                 mostly = s;
39             }
40         }
41         // 将字符串mostly转为数字
42         int h = Integer.parseInt(mostly);
43         System.out.println("字符串中出现的最多数字是: " + h);
44         System.out.println("该数字出现的次数是: " + times);
45         System.out.println("所以出现最多次数的数字的和是: " + h * times);
46 
47     }
48 
49 }

 

 

总结:

考察:

1.利用正则表达式进行字符串切割,

2.怎么判断字符串出现了几次(用hashSet),也即考察hashSet的性质,add()方法

3.遍历map的操作

3.更新键值对中value的思路

我没能想到其他的技巧,局限了,有点蛮力哟,不喜勿喷。

 

输入字符串,包含数字,大小写字母,编程输出出现做多的数字的和

标签:字符串   line   字符   对应关系   多次   最大   family   span   generate   

原文地址:https://www.cnblogs.com/zclun/p/9955157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!