问题描述
输入一个数n,找出小于等于n且满足一下规则的最大的数x。
规则:x中的从左到右的每一位都是单调不减的。
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(6);
list.add(7);
list.add(4);
list.add(8);
list.add(2);
list.add(9);
String result3 = solution(list);
System.out.println(result);
}
public static String solution(List<Integer> list){
//判空
LinkedList<Integer> stack1 = new LinkedList<Integer>();
LinkedList<Integer> stack2 = new LinkedList<Integer>();
for(int i = 0; i < list.size(); i++){
//排除数字开始是0的情况
if(list.get(i) == 0){
stack1.clear();
continue;
}
stack2.push(list.get(i));
while(!stack1.isEmpty() && stack1.peek() > list.get(i)){
stack1.pop();
stack2.push(list.get(i));
}
while(!stack2.isEmpty()){
stack1.push(stack2.pop());
}
}
StringBuilder sb = new StringBuilder();
while(!stack1.isEmpty()){
sb.append(stack1.pop());
}
return sb.reverse().toString();
}