A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).
Write a function to determine if a number is strobogrammatic. The number is represented as a string.
For example, the numbers "69", "88", and "818" are all strobogrammatic.
Solution:
1 public class Solution { 2 public boolean isStrobogrammatic(String num) { 3 int p1 = 0, p2 = num.length() - 1; 4 while (p1 <= p2) { 5 if (!isValidPair(num.charAt(p1), num.charAt(p2))) 6 return false; 7 p1++; 8 p2--; 9 } 10 return true; 11 } 12 13 public boolean isValidNum(int num) { 14 if (num == 0 || num == 1 || num == 6 || num == 8 || num == 9) 15 return true; 16 17 return false; 18 } 19 20 public boolean isValidPair(char c1, char c2) { 21 int num1 = c1 - '0'; 22 int num2 = c2 - '0'; 23 if (!isValidNum(num1) || !isValidNum(num2)) 24 return false; 25 26 if ((num1 == 6 && num2 != 9) || (num1 == 9 && num2 != 6)) { 27 return false; 28 } else if (num1 + num2 != 15 && num1 != num2) { 29 return false; 30 } 31 return true; 32 } 33 }