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