> For the complete documentation index, see [llms.txt](https://hao-fu-1.gitbook.io/oj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hao-fu-1.gitbook.io/oj/math/strobogrammatic-number.md).

# Strobogrammatic Number

https\://leetcode.com/problems/strobogrammatic-number/description/

> 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.

## Thoughts

检查一串数字是否满足翻180°还是原来的数字。 和回文一样必须两边对称，不同的是这次6和9是对称的，0, 8, 1分别和对应的相同数字对称，并且中间的数也只能是它们仨。

## Code

```cpp
class Solution {
public:
    bool isStrobogrammatic(string num) {
        for (int i = 0, j = num.length() - 1; i <= j; ++i, --j) {
            if (num[i] == '8' && num[j] == '8' || num[i] == '1' && num[j] == '1' || num[i] == '0' && num[j] == '0' || num[i] == '6' && num[j] == '9' || 
               num[i] == '9' && num[j] == '6')
                continue;
            return false;
        } 
        return true;
    }
};
```

```cpp
class Solution {
    public boolean isStrobogrammatic(String num) {
        for (int l = 0, r = num.length() - 1; l <= r; l++, r--) {
            char c1 = num.charAt(l), c2 = num.charAt(r);
            if (c1 == c2 && "180".contains(c1 + "") || c1 == '6' && c2 == '9' || c1 == '9' && c2 == '6') {
                continue;
            }
            return false;
        }

        return true;
    }
}
```

## Analysis

时间复杂度O(N)
