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; } }
Monthly Archives: July 2018
860. Lemonade Change
class Solution { public static boolean lemonadeChange(int[] bills) { HashMap d = new HashMap(); d.put(5, 0); d.put(10, 0); for (int i = 0; i < bills.length; i++) { if (bills[i] == 5) { d.put(5, d.get(5) + 1); } else if (bills[i] == 10) { if (d.get(5) <= 0) return false; d.put(5, d.get(5) - 1); d.put(10, d.get(10) + 1); } else if (bills[i] == 20) { if ((d.get(10) - 1) < 0) { // no 10's if (d.get(5) - 3 < 0) return false; } else {// there are 10's if (d.get(5) - 1 = 1 && d.get(5) >= 1) { d.put(5, d.get(5) - 1); d.put(10, d.get(10) - 1); } else if (d.get(5) - 3 >= 0) { d.put(5, d.get(5) - 3); } } } return true; } }