蚂蚁笔试研发卷0825第二题好数

这几场笔试被自己菜吐了,场上一直想着怎么处理字符串,下来思考发现貌似可以用递归处理,实现了一下,请教大佬们这个有没有说法:
public static long findNextGoodNumber(long num){
        String s = String.valueOf(num);
        int n = s.length();
        //获取最高位的基数
        long base = (long) Math.pow(10, n-1);
        Set<Character>set = 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;
    }
#笔试##蚂蚁#
全部评论

相关推荐

牛客10001:问就是六个月,全国可飞,给钱就干
点赞 评论 收藏
分享
哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务