刷leetcode-day22

一、题目:

788.旋转数字:

我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。

如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。

现在我们有一个正整数 N, 计算从 1 到 N 中有多少个数 X 是好数?

示例:
输入: 10
输出: 4

解释: 在[1, 10]中有四个好数: 2, 5, 6, 9。 注意 1 和 10 不是好数, 因为他们在旋转之后不变。

二、思路:

当一个数中含有2,5,6,9任意一个数字并且不含有3,4,7时,则该数为一个好数。

遍历1到N之间的数,首先把它转化为字符串;遍历该字符串,引入一个vector统计它每个数字的个数,再进行判断。

三、代码(C++):

 int rotatedDigits(int N) {
        vector<int> a(10,0);
        int k=0;
        for(int i=2;i!=N+1;i++)
        {
            string s=to_string(i);         //把i转化为字符串
            for(auto s1:s)
            {
                ++a[s1-'0'];                    //统计s中每个字符的个数
            }
            if((a[3]==0)&&(a[4]==0)&&(a[7]==0))
            {
                if((a[2]!=0)||(a[5]!=0)||(a[6]!=0)||(a[9]!=0))         //好数的条件判断
                    k++;
            }
            for(auto &a1:a)
                a1=0;
        }
        return k;
    }

全部评论

相关推荐

07-24 12:30
湘潭大学 营销
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务