codebuddies / DailyAlgorithms

Do a problem. Create (or find) your problem in the issues. Paste a link to your solution. See others' solutions of the same problem.
12 stars 1 forks source link

[Leetcode] Rotated Digits #46

Open lpatmo opened 5 years ago

lpatmo commented 5 years ago

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 commented 5 years ago

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;
};