旋转数字00

题目链接

旋转数字

题目描述

注意

  • 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。其中X当中某一位如果为0、1、8,并不代表X不是好数,如果其其他位都是有效的,且其中至少有一位数字为2、5、6、9,则X也是好数

解答思路

  • 依据题目意思从1遍历到N之间的所有数字X,将X转为字符串s,对s中的每一个字符进行判断,如果出现了0、1、8、2、5、6、9以外的数字,则一定不是好数,在此基础上如果出现了2、5、6、9则一定是好数,最终可以成功运行,但是时间并不理想

代码

class Solution {
    public int rotatedDigits(int n) {
        int res = 0;
        for(int i = 1; i <= n; i++) {
            String s = i + "";
            boolean isGood = true;
            boolean isDiff = false;
            for(int j = 0; j < s.length(); j++) {
                char c = s.charAt(j);
                if(c == '2' || c == '5' || c == '6' || c == '9') {
                    isDiff = true;
                    continue;
                } else if(c == '0' || c == '1' || c == '8') {
                    continue;
                } else {
                    isGood = false;
                    break;
                }
            }
            if(isGood && isDiff) {
                res++;
            }
        }
        return res;
    }
}

关键点

  • X为好数满足的条件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值