import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* 最大值
* 给出一个由0~9数字构成的字符串s,重新排列数字的顺序并将字符串拆分成两个非负整数a、b(可包含前缀0), 求a+b的最大值
* 补全函数cal(s),传入字符串s,返回a+b的最大值的字符串 数据范围2<=|s|<=1000
* @author huangxw
*
*/publicclass Cal {
publicstaticvoid main(String[] args){
//test instance//String s = "9999999999999991";//String s = "000";//String s = "123";
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String ret = cal(s);
System.out.println("ret value is = " + ret);
}
publicstatic String cal(String s){
if (s==null && s.length()<2)
return null;
//change to integer
List<Integer> list = new ArrayList<Integer>();
for(int i=0; i<s.length(); i++){
list.add(s.charAt(i)-'0');
}
System.out.println("list value is = " + list);
//sort the list of numbers, decrease, ex. 99991for(int i=0; i<list.size(); i++){
for(int j=i+1; j<list.size(); j++){
if(list.get(j)>list.get(i)){
//swapint temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
//min = last character of listint min = list.get(list.size()-1);
//original string without last characterlist.remove(list.size()-1);
//carry list and min to be a new string
List<Integer> array = new ArrayList<Integer>();
//min just plus onceint carry = (list.get(list.size()-1) + min)/10;
array.add((list.get(list.size()-1)+min)%10);
//carry plus every timefor(int k=list.size()-2; k>=0; k--){
carry = (list.get(k) + carry)/10;
array.add((list.get(k) + carry)%10);
}
//highest number is specialif(carry!=0){
array.add(carry);
}
//all zeros situationif(array.get(array.size()-1)==0)
return"0";
//change to string
String ret = "";
for(int m=array.size()-1; m>=0; m--){
ret = ret + array.get(m);
}
return ret;
}
}