蚂蚁笔试研发卷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;
    }
#笔试##蚂蚁#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务