leetcode246 Strobogrammatic Number-zh
# 246. 中心对称数 (opens new window)
English Version (opens new window)
# 题目描述
中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。
请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字。
示例 1:
输入: num = "69" 输出: true
示例 2:
输入: num = "88" 输出: true
示例 3:
输入: num = "962" 输出: false
示例 4:
输入:num = "1" 输出:true
# 解法
# Python3
class Solution:
def isStrobogrammatic(self, num: str) -> bool:
def match(a, b):
if a in {'0', '1', '8'}:
return a == b
if a == '6':
return b == '9'
if a == '9':
return b == '6'
return False
n = len(num)
i, j = 0, n - 1
while i <= j:
if not match(num[i], num[j]):
return False
i += 1
j -= 1
return True
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Java
class Solution {
public boolean isStrobogrammatic(String num) {
int n = num.length();
for (int i = 0, j = n - 1; i <= j; ++i, --j) {
if (!match(num.charAt(i), num.charAt(j))) return false;
}
return true;
}
private boolean match(char a, char b) {
switch (a) {
case '0':
case '1':
case '8':
return a == b;
case '6':
return b == '9';
case '9':
return b == '6';
default:
return false;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ...
1
编辑 (opens new window)
上次更新: 2021/10/30, 12:58:38