关注
package 米哈游;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;
//A3bc2X-b2
public class 压缩字符串 {
static HashMap<Character,Integer> map = new HashMap<>();
static HashMap<Character,Integer> tempMap = new HashMap<>();
static int max = 0;
static char maxCh ='z'+1;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
Character pre = null,next = null;
for(int i = 0 ; i < line.length() ; i++) {
char ch = line.charAt(i);
//如果不是字母
if(ch<'A'||ch>'z') {
//下划线
if(ch=='-') {
pre = line.charAt(i-1);
next = line.charAt(++i);
// System.out.println("pre"+pre);
// System.out.println("pre"+next);
for(int j = pre ; j <=next ; j++) {
if(j>'Z'&&j<'a') continue;
int val = 0;
if(tempMap.containsKey((char)j)) val = tempMap.get((char)j);
tempMap.put((char)j, val+1);
//System.out.println((char)j+"---"+(val+1));
}
}
//数字
else {
int num = Integer.parseInt(ch+"");//倍数
cal(num);
//重置缓存
tempMap = new HashMap<>();
}
}
//字母
else {
int val = 0;
if(tempMap.containsKey(ch)) val = tempMap.get(ch);
tempMap.put(ch, val+1);
pre = ch;
}
}
cal(1);
System.out.println(""+maxCh+max);
}
public static void cal(int num) {
Iterator<Character> chs = tempMap.keySet().iterator();
//遍历缓存,合并到map中
while(chs.hasNext()) {
int val = 0,newVal = 0;
char tempCh = chs.next();
if(map.containsKey(tempCh)) val = map.get(tempCh);
newVal = val+tempMap.get(tempCh)*num;
//System.out.println(tempCh+":"+tempMap.get(tempCh)+":"+num+":"+newVal);
if(newVal==0) newVal++;
map.put(tempCh, newVal);
if(tempCh<'a') {
int v = 0;
char BtempCh = (char)(tempCh+('a'-'A'));
//System.out.println("BtempCh:"+BtempCh);
if(map.containsKey(BtempCh)) v = map.get(BtempCh);
newVal += v;
//System.out.println(map.get(BtempCh));
tempCh = BtempCh;
//System.out.println(v);
}else {
int v = 0;
char StempCh = (char)(tempCh-('a'-'A'));
//System.out.println("StempCh:"+StempCh);
if(map.containsKey(StempCh)) v = map.get(StempCh);
newVal += v;
//System.out.println(map.get(StempCh));
//tempCh = StempCh;
//System.out.println(v);
}
//更新最大值
if(newVal>=max) {
if(tempCh<maxCh) {
max = newVal;
maxCh = tempCh;
}
}
}
}
}
我太难了,一道都没写出来,这道题还是结束后20分钟才调出来的,,,,,好惨啊
查看原帖
点赞 评论
相关推荐
02-25 16:17
门头沟学院 Java 点赞 评论 收藏
分享
03-21 11:27
复旦大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 春招/暑实第一面是哪家? #
29689次浏览 308人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
6488次浏览 33人参与
# 巨人网络春招 #
10925次浏览 179人参与
# 腾讯音乐求职进展汇总 #
160092次浏览 1103人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
185928次浏览 1105人参与
# 小红书求职进展汇总 #
226485次浏览 1354人参与
# MiniMax求职进展汇总 #
21653次浏览 275人参与
# 硬件人秋招的第一个offer #
122349次浏览 1454人参与
# 实习到现在,你最困惑的一个问题 #
31260次浏览 271人参与
# 如果重来一次你还会读研吗 #
229122次浏览 2009人参与
# 网易游戏笔试 #
6123次浏览 83人参与
# 职能管理面试记录 #
10447次浏览 57人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
6465次浏览 152人参与
# 正在春招的你,也参与了去年秋招吗? #
361870次浏览 2628人参与
# 硬件应届生薪资是否普遍偏低? #
108157次浏览 601人参与
# 简历中的项目经历要怎么写? #
308692次浏览 4111人参与
# 工作中遇到的歹人 #
96292次浏览 535人参与
# 我的AI电子员工 #
34138次浏览 223人参与
# 校招笔试 #
462392次浏览 2943人参与
# AI时代,哪些岗位最容易被淘汰 #
61226次浏览 669人参与
# 你怎么看待AI面试 #
178652次浏览 1108人参与
# 如何一边实习一边找下家? #
40808次浏览 351人参与