LeetCode算法246: 中心对称数

LeetCode算法246: 中心对称数

链接: /

题目描述

中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。
请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字。

C++代码解答

解法一

将字符串翻转,判断翻转之后的字符串是否与原字符串相等。

class Solution {
public:bool isStrobogrammatic(std::string num) {if (num.empty()) {return false;}std::unordered_map<char, char> table{{'0', '0'}, {'1', '1'}, {'6', '9'}, {'8', '8'}, {'9', '6'}};std::string rotate;for (auto it = num.rbegin(); it != num.rend(); ++it) {if (table.count(*it) == 0) {return false;}rotate.push_back(table[*it]);}return rotate == num;}
};

解法二

class Solution {
public:bool isStrobogrammatic(std::string num){if (num.empty()) {return false;}std::size_t len = num.size();std::unordered_map<char, char> table{{'0', '0'}, {'1', '1'}, {'8', '8'}, {'6', '9'}, {'9', '6'}};for (std::size_t i = 0; i < len / 2; ++i) {if (table(num[i]) != num[len - 1 - i]) {return false;}}return true;}
}

LeetCode算法246: 中心对称数

LeetCode算法246: 中心对称数

链接: /

题目描述

中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看)。
请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字。

C++代码解答

解法一

将字符串翻转,判断翻转之后的字符串是否与原字符串相等。

class Solution {
public:bool isStrobogrammatic(std::string num) {if (num.empty()) {return false;}std::unordered_map<char, char> table{{'0', '0'}, {'1', '1'}, {'6', '9'}, {'8', '8'}, {'9', '6'}};std::string rotate;for (auto it = num.rbegin(); it != num.rend(); ++it) {if (table.count(*it) == 0) {return false;}rotate.push_back(table[*it]);}return rotate == num;}
};

解法二

class Solution {
public:bool isStrobogrammatic(std::string num){if (num.empty()) {return false;}std::size_t len = num.size();std::unordered_map<char, char> table{{'0', '0'}, {'1', '1'}, {'8', '8'}, {'6', '9'}, {'9', '6'}};for (std::size_t i = 0; i < len / 2; ++i) {if (table(num[i]) != num[len - 1 - i]) {return false;}}return true;}
}