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

题目描述:

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

思路:

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

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

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

时间: 2024-08-13 01:57:48

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

字符串中的元音字母翻转输出

字符串中的元音字母翻转 345. Reverse Vowels of a String QuestionEditorial Solution My Submissions Total Accepted: 31038 Total Submissions: 86077 Difficulty: Easy Write a function that takes a string as input and reverse only the vowels of a string. Example 1:Giv

从文件读取包含数字和字母字符串,统计每个字符出现的次数,将次数输出到另外一个文件

1 //2016年重大考研机试题目 2 //从文件读取包含数字和字母字符串,统计每个字符出现的次数 3 //输出格式,字符:次数并输出到另外一个文件 4 //需要在D盘下新建文件text.in 5 #include<stdio.h> 6 #include<stdlib.h> 7 #include<string.h> 8 9 int main() 10 { 11 FILE *fp_read, *fp_write;//读写文件指针 12 int count[36]; //存

JAVA 统计键盘输入的一个字符串中的数字,字母大小写和其他。

package Code503; import java.util.Scanner;/*题目:统计键盘输入的一个字符串中的数字,字母大小写和其他. */ public class CodeStringCount { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入一个字符串"); String input = scanner

Python 使用正则表达式验证密码必须包含大小写字母和数字

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px ".PingFang SC Light" } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" } span.s1 { font: 14.0px "Helvetica Neue" } span.s2 { font: 14.0px ".PingF

IOS中用正则表达式判断输入的内容为8-16位且同时包含数字和字母

今天在项目中需要用到判断用户输入的用户名长度为8-16位且同时包含数字和字母,在网上搜了一下正则表达式的用法,然后参考这篇blog,完美解答了问题.记录一下: 密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间. 如何分析需求?拆分!这就是软件设计的一般思路了.于是乎,拆分需求如下: 1,不能全部是数字 2,不能全部是字母 3,必须是数字或字母 只要能同时满足上面3个要求就可以了,写出来如下: 1 ^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-

编程题:输入英文月份单词,输出对应月的数字形式。

#include<stdio.h> #include<string.h> int search(char list[][20],char name[],int m) { int i; for(i=0;i<m;i++) if(strcmp(list[i],name)==0) break; return i; } void main() { char month_list[12][20]={"January","February",&quo

编程题:用二维字符串数组实现。从键盘输入三个学生姓名,并输出。

#include<stdio.h> #include<string.h> void main() { char name[3][30]; int i; for(i=0;i<3;i++) gets(name[i]);  /*name[i]是一个一维字符数组*/ for(i=0;i<3;i++) printf("%s\n",name[i]); } 编程题:用二维字符串数组实现.从键盘输入三个学生姓名,并输出.,布布扣,bubuko.com

编程题:指针数组实现,将多个字符串按字母顺序输出。

#include<stdio.h> void sort(char *str[],int n) { char *temp;int i,j,k; for(i=0;i<n-1;i++) {k=1; for(j=i+1;j<n;j++) if(strcmp(str[k],str[j])>0) k=j; if(k!=i) {temp=str[i];str[i]=str[k];str[k]=temp;} } } void main() { int i,n=4; char *string[

字符串分隔 -&gt;连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组; ?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

?连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组:?长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于100) 输出描述: 输出到长度为8的新字符串数组 输入例子: abc 123456789 输出例子: abc00000 12345678 90000000 import java.util.*; public class Main{     public static void main(String[] ar