import java.util.*;
/*
正整数去重之后取最大数
423234-->432
4423-->423
*/
public class Mian2 {
public static void main(String[] args) {
Scanner fin = new Scanner(System.in);
// while (fin.hasNext()) {
String str = fin.nextLine();
// if (str.charAt(0) == '-') {
// System.out.println(0);
// break;
// }
Set<Character> set = new TreeSet<Character>();
for (int i = 0; i < str.length(); i++) {
set.add(str.charAt(i));
}
char[] c = new char[set.size()];
Iterator<Character> it = set.iterator();
int index = 0;
while (it.hasNext()) {
c[index] = it.next();
index++;
}
List<Integer> list = new ArrayList<Integer>();
permutation(c, 0, c.length - 1, list);
System.out.println(list);
//
Object[] array = list.toArray();
Arrays.sort(array);
List<String> list1 = new ArrayList<String>();
zuhe(str, list1, c.length);
for (int i = array.length - 1; i >= 0; i--) {
if (list1.contains(array[i].toString())) {
System.out.println(array[i]);
break;
}
}
// }
}
// 字符组合
public static void zuhe(String str, List<String> list, int length) {
int count = (int) (Math.pow(2, str.length()) - 1);// 7
for (int i = 1; i <= count; i++) {
String ss = Integer.toBinaryString(i).toString();
while (ss.length() < str.length()) {
ss = "0" + ss;
}
StringBuffer sb = new StringBuffer();
for (int j = 0; j < ss.length(); j++) {
if (ss.charAt(j) == '1') {
sb.append(str.charAt(j));
}
}
if (sb.length() == length) {
list.add(sb.toString());
}
// System.out.print(sb + " ");
}
}
// 字符排列
public static void permutation(char[] s, int from, int to,
List<Integer> list) {
if (to <= 1)
return;
if (from == to) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length; i++) {
sb.append(s[i]);
}
list.add(Integer.parseInt(sb.toString()));
} else {
for (int i = from; i <= to; i++) {
swap(s, i, from); // 交换前缀,使其产生下一个前缀
permutation(s, from + 1, to, list);
swap(s, from, i); // 将前缀换回,继续做上一个前缀的排列
}
}
}
public static void swap(char[] s, int i, int j) {
char tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
正整数去重取最大值
最新推荐文章于 2022-04-06 20:07:56 发布