目录
  1. 1. 问题描述
  2. 2. 思路
  3. 3. 实现
算法-消除重复数字后的最大值

问题描述

一个长整型数字,消除重复的数字后,得到最大的一个数字。
如12341 ,消除重复的1,可得到1234或2341,取最大值2341。
42234,消除4 得到4223 或者 2234 ,再消除2,得到423或234,取最大值423。
以此类推。

思路

从头到尾遍历,比如432324。
第一次4,
第二次3,前面没有和3重复的,所以结果尾43
第三次2,前面没有和2重复的,所以结果尾432
第四次3,前面有重复的,比较前面那个3的下一个数字为2,因为3>2,所以删除当前的3. 结果为432
以此类推

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
List list = new ArrayList();
for (int i=0;i<input.length();i++){
list.add(input.charAt(i));
}
for (int i=0;i<list.size();i++){
for (int j=0;j<i;j++){
if (list.get(i).equals(list.get(j))){
if (Integer.valueOf(list.get(j+1).toString())>Integer.valueOf(list.get(j).toString()))
{
//移除
list.remove(j);
//i回退
i--;
break;
}else {
//移除
list.remove(i);
//i回退
i--;
break;
}
}
}
}
for (int i=0;i<list.size();i++){
System.out.print(list.get(i));
}
System.out.println();
}
}
文章作者: 李浩
文章链接: https://leehoward.cn/2019/10/17/算法-消除重复数字后的最大值/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 leehoward
打赏
  • 微信
  • 支付宝

评论