蚂蚁笔试研发卷0825第二题好数
这几场笔试被自己菜吐了,场上一直想着怎么处理字符串,下来思考发现貌似可以用递归处理,实现了一下,请教大佬们这个有没有说法:
public static long findNextGoodNumber(long num){
String s = String.valueOf(num);
int n = s.length();
//获取最高位的基数
long base = (long) Math.pow(10, n-1);
Setset = new HashSet<>();
char[] arr = s.toCharArray();
//构造新的数
long x = 0;
for(int i = 0 ; i < n;i++){
if(!set.contains(arr[i])){
//到i为止的数字没有重复过
x += ((arr[i]-'0') * base);
base /= 10;
set.add(arr[i]);
}else{
//即便进位处理交给下一轮迭代
x += ((arr[i]-'0' + 1) * base);
return findNextGoodNumber(x);
}
}
//x是好数
return x;
}
#笔试##蚂蚁#
public static long findNextGoodNumber(long num){
String s = String.valueOf(num);
int n = s.length();
//获取最高位的基数
long base = (long) Math.pow(10, n-1);
Set
char[] arr = s.toCharArray();
//构造新的数
long x = 0;
for(int i = 0 ; i < n;i++){
if(!set.contains(arr[i])){
//到i为止的数字没有重复过
x += ((arr[i]-'0') * base);
base /= 10;
set.add(arr[i]);
}else{
//即便进位处理交给下一轮迭代
x += ((arr[i]-'0' + 1) * base);
return findNextGoodNumber(x);
}
}
//x是好数
return x;
}
#笔试##蚂蚁#
全部评论
相关推荐
09-13 10:16
西北大学 C++ 点赞 评论 收藏
分享