题目描述:
给定一个由纯数字组成以字符串表示的数值,现要求字符串中的每个数字最多只能出现2次,超过的需要进行删除;删除某个重复的数字后,其它数字相对位置保持不变。
如"34533",数字3重复超过2次,需要删除其中一个3,删除第一个3后获得最大数值"4533"
请返回经过删除操作后的最大的数值,以字符串表示。
输入描述:
第一行为一个纯数字组成的字符串,长度范围:[1,100000]
输出描述:
输出经过删除操作后的最大的数值
补充说明:
收起
示例1
输入:
34533
输出:
4533
说明:
示例2
输入:
5445795045
输出:
5479504
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
private static final Integer LIMIT_SIZE = 2;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
String input = sc.nextLine();
Map<Character, Integer> countMap = new HashMap<>();
StringBuilder sb = new StringBuilder();
for (Character character : input.toCharArray()) {
Integer count = countMap.getOrDefault(character, 0);
if (count < LIMIT_SIZE) {
countMap.put(character, count + 1);
sb.append(character);
} else {
for (int i = 0; i < sb.toString().length() - 1; ++i ) {
char currCh = sb.charAt(i);
char nextCh = sb.charAt(i + 1);
if (currCh == character && currCh < nextCh) {
sb.deleteCharAt(i);
sb.append(character);
break;
}
}
}
}
System.out.println(sb);
}
}
}