字符串 788. 旋转数字

Posted ocpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串 788. 旋转数字相关的知识,希望对你有一定的参考价值。

题目:

技术图片

 

 

 

 

解答:

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

思路:

遍历从 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. 旋转数字的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode788. 旋转数字

LeetCode 0788. 旋转数字

CF788E:New task

处理屏幕旋转上的片段重复(带有示例代码)

使用 ActionBar 旋转 Android 的双片段

Butterknife 片段旋转给出 NullPointer