Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Leetcode] Rotated Digits #46

Open
lpatmo opened this issue May 24, 2019 · 1 comment
Open

[Leetcode] Rotated Digits #46

lpatmo opened this issue May 24, 2019 · 1 comment

Comments

@lpatmo
Copy link
Member

lpatmo commented May 24, 2019

X is a good number 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 a digit after rotation. 0, 1, and 8 rotate to themselves; 2 and 5 rotate to each other; 6 and 9 rotate to each other, and the rest of the numbers do not rotate to any other number and become invalid.

Now given a positive number N, how many numbers X from 1 to N are good?

Example:
Input: 10
Output: 4
Explanation:
There are four good numbers in the range [1, 10] : 2, 5, 6, 9.
Note that 1 and 10 are not good numbers, since they remain unchanged after rotating.

@lpatmo
Copy link
Member Author

lpatmo commented May 24, 2019

var rotatedDigits = function(N) {
    let counter = 0;
    for (let i=1; i <= N; i++) {
        let strNumber = i.toString();
        //console.log("strNumber", strNumber)
        let rotation = "";
        let digit;
        for (let num = 0; num < strNumber.length; num++) {
            digit = strNumber[num];
            if (digit === "3" || digit === "4" || digit === "7") {
                num += strNumber.length;
                rotation = strNumber;
            } else if (digit === "2") {
                rotation += "5"
            } else if (digit === "5") {
                rotation += "2"
            } else if (digit === "6") {
                rotation += "9"
            } else if (digit === "9") {
                rotation += "6"
            } else {
                rotation += digit;
            }
         }
        
//         console.log('strNumber is: ', strNumber)
//         console.log('rotation is: ', rotation)
        if (rotation !== strNumber) {
            counter++;
        }
    }
    return counter;
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant