輸入字符串,包含數字,大小寫字母,編程輸出出現做多的數字的和


題目描述:

輸入字符串,包含數字,大小寫字母,編程輸出出現做多的數字的和。

思路:

 

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的思路

我沒能想到其他的技巧,局限了,有點蠻力喲,不喜勿噴。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM