首页 > 其他 > 详细

【字符串】 788. 旋转数字

时间:2020-05-03 22:03:32      阅读:43      评论:0      收藏:0      [点我收藏+]

题目:

技术分享图片

 

 

 

 

解答:

方法一:暴力解法【通过】

思路:

遍历从 1 到 N 的每个数字 X,判断 X 是否为好数。 如果 X 中存在 3、4、7 这样的无效数字,则 X 不是一个好数。 如果 X 中不存在 2、5、6、9 这样的旋转后会变成不同的数字,则 X 不是一个好数。 否则,X 可以旋转成一个不同的有效数字。

算法:

判断数字 X 是否为好数,有两种实现方式。最直观的一种方法是把 X 转换成字符串然后解析;另一种方法是递归检查 X 的最后一位数字。

 

 1 class Solution {
 2 public:
 3     int rotatedDigits(int N) 
 4     {
 5         // Count how many n in [1, N] are good.
 6         int ans = 0;
 7         for (int n = 1; n <= N; ++n)
 8         {
 9             if (good(n, false)) 
10             {
11                 ans++;
12             }
13         }
14         return ans;
15     }
16 
17     // Return true if n is good.
18     // The flag is true iff we have an occurrence of 2, 5, 6, 9.
19     bool good(int n, bool flag) 
20     {
21         if (n == 0) 
22         {   
23             return flag;
24         }
25 
26         int d = n % 10;
27         if (d == 3 || d == 4 || d == 7) 
28         {
29             return false;
30         }
31         if (d == 0 || d == 1 || d == 8) 
32         {
33             return good(n / 10, flag);
34         }
35 
36         return good(n / 10, true);
37     }
38 };

 

【字符串】 788. 旋转数字

原文:https://www.cnblogs.com/ocpc/p/12823515.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!