正整数去重取最大值

来源:互联网 发布:神行者定位软件 编辑:程序博客网 时间:2024/06/07 13:31
import java.util.*;/*正整数去重之后取最大数423234-->4324423-->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;    }}
阅读全文
0 0
原创粉丝点击