leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

commit 325fd04440403b86ba313401962d940cef1f5a5f
parent bedd45bbdb069ba6bcc4df16577bd6fd2e2c1a1d
Author: Jack Sangdahl <jack@pngu.org>
Date:   Fri,  1 May 2026 21:12:47 -0600

788. rotated digits

Diffstat:
Arotated_digits.c | 41+++++++++++++++++++++++++++++++++++++++++
Arotated_digits.py | 34++++++++++++++++++++++++++++++++++
2 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/rotated_digits.c b/rotated_digits.c @@ -0,0 +1,41 @@ +// 788. Rotated Digits +#include "leetcode.h" + +/* + * an integer 'x' is good if after rotating each digit individually by 180 + * degrees, we get a valid number that is different from 'x'. each digit must be + * rotated - we cannot choose to leave it alone. a number is valid if each digit + * remains after rotation. given the integer 'n', return the number of good + * integers in the range '[1, n]'. + */ + +int rotatedDigits(int n) { + int cnt = 0; + for (int i = 1; i <= n; i++) { + int check = i; + bool valid = true, changed = false; + while (check > 0 && valid) { + int digit = check % 10; + if (digit == 3 || digit == 4 || digit == 7) + valid = false; + else if (digit == 2 || digit == 5 || digit == 6 || digit == 9) + changed = true; + check /= 10; + } + if (valid && changed) + cnt++; + } + return cnt; +} + +int main() { + int r1 = rotatedDigits(10); + int r2 = rotatedDigits(1); + int r3 = rotatedDigits(2); + printf("%d\n", r1); + assert(r1 == 4); + printf("%d\n", r2); + assert(r2 == 0); + printf("%d\n", r3); + assert(r3 == 1); +} diff --git a/rotated_digits.py b/rotated_digits.py @@ -0,0 +1,34 @@ +# 788. Rotated Digits + +""" +an integer 'x' is good if after rotating each digit individually by 180 +degrees, we get a valid number that is different from 'x'. each digit must be +rotated - we cannot choose to leave it alone. a number is valid if each digit +remains after rotation. given the integer 'n', return the number of good +integers in the range '[1, n]'. +""" + + +class Solution: + def rotatedDigits(self, n: int) -> int: + cnt = 0 + for i in range(1, n + 1): + check = i + valid, changed = True, False + while check > 0 and valid: + digit = check % 10 + if digit in (3, 4, 7): + valid = False + elif digit in (2, 5, 6, 9): + changed = True + check //= 10 + if valid and changed: + cnt += 1 + return cnt + + +if __name__ == "__main__": + obj = Solution() + print(obj.rotatedDigits(n=10)) + print(obj.rotatedDigits(n=1)) + print(obj.rotatedDigits(n=2))