阿里笔试:输出字符串中的出现最多的数字的和(无判题系统)
题目描述
写段代码,定义一个字符串常量,字符串中只有大小写字母和整数,输出字符串中的出现最多的数字的和?例如 “9fil3dj11P0jAsf11j “,中出现最多的是11两次,输出22.
思路:
参考大神思路
按非数字分割,”9fil3dj11P0jAsf11j”被分割成”【9、3、11、0、11】”,然后统计数字出现的次数
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static int solution (String s) {
String[] arr = s.split("[^0-9]");
HashMap<String, Integer> map = new HashMap<>();
int max = 1;
int index = 0;
for(int i = 0; i < arr.length; i++) {
if(!"".equals(arr[i])) {
if(map.containsKey(arr[i])) {
int times = map.get(arr[i]) + 1;
max = Math.max(max, times);
map.put(arr[i], times);
index = i;
}else {
map.put(arr[i], 1);
}
}
}
return max * Integer.valueOf(arr[index]);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
// String s = "9fil3dj11P0jAsf11j";
// s = "9393";
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String s = sc.nextLine();
int result = solution(s);
System.out.println(result);
}
sc.close();
}
}