788. Rotated Digits

788. Rotated Digits

class Solution {
 	public static int rotatedDigits(int N) {

		int good = N;
		for (int i = 1; i <= N; i++) {
			boolean valid = true;
			int current = i;
			int converted = i;
			inner: {
				int m = 1;
				while (current != 0) {
					int digit = current % 10; // get current digit

					// Convert digits regard to the specific rule
					if (digit == 2) {
						converted -= (digit * m);
						converted += (5 * m);
					} else if (digit == 5) {
						converted -= (digit * m);
						converted += (2 * m);
					} else if (digit == 6) {
						converted -= (digit * m);
						converted += (9 * m);
					} else if (digit == 9) {
						converted -= (digit * m);
						converted += (6 * m);
					}

					if (digit == 3 || digit == 4 || digit == 7) {
						valid = false;
						good--;
						break inner;
					}
					current /= 10;
					m *= 10;// next digit
				}

			}
			if (converted == i && valid)
				good--;
		}
		return good;
	}
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s