重新排列数字
X
,找到小于或等于Y
的最大可能数。如果不可能,则返回-1
。
此外,生成的输出不应该有前导零。
示例:
X = 2851
Y = 8774
答案:
8521
说明:8521小于或等于8774,且它是可能的最大数。
这是我尝试的代码:
public String process(long X, long Y) {
if(X > Y) return "-1";
char[] arr = (""+X).toCharArray();
Arrays.sort(arr);
String s = new String(arr);
s = new StringBuilder(s).reverse().toString();
long x1 = Long.parseLong(s);
if(x1 <= Y) return "" + x1;
return "=1";
}
我的方法不正确,因为我总是检查X中给定数字的最大可能数。解决这个程序的正确方法是什么?
使用我的程序失败的另一个示例测试用例是:
示例:
X = 12222
Y = 21111
期望答案:
12222
TreeMap
构建一个以原始数字的出现次数为值的映射表。 - SomeDudeif(X > Y) return "-1";
是不正确的。考虑x = 9231; y = 2314
。X
大于Y
,但是2139
满足所述要求。 - WJS