Ai
1 Star 2 Fork 5

LilithSangreal/LeetCode-Solutions

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
find-the-closest-palindrome.cpp 1021 Bytes
一键复制 编辑 原始数据 按行查看 历史
kamyu 提交于 2017-05-07 00:03 +08:00 . Update find-the-closest-palindrome.cpp
// Time: O(l)
// Space: O(l)
class Solution {
public:
string nearestPalindromic(string n) {
const auto l = n.size();
unordered_set<long long> candidates;
candidates.emplace(static_cast<long long>(pow(10, l)) + 1);
candidates.emplace(static_cast<long long>(pow(10, l - 1)) - 1);
auto prefix = stol(n.substr(0, (l + 1) / 2));
for (long long i = -1; i <= 1; ++i) {
auto p = to_string(prefix + i);
auto pp = p + string(p.rbegin() + (l % 2), p.rend());
candidates.emplace(stol(pp));
}
long long num = stol(n), closest_val = numeric_limits<long long>::max();
candidates.erase(num);
for (const auto& val : candidates) {
if (abs(val - num) < abs(closest_val - num)) {
closest_val = val;
} else if (abs(val - num) == abs(closest_val - num)) {
closest_val = min(closest_val, val);
}
}
return to_string(closest_val);
}
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LilithSangreal/LeetCode-Solutions.git
git@gitee.com:LilithSangreal/LeetCode-Solutions.git
LilithSangreal
LeetCode-Solutions
LeetCode-Solutions
master

搜索帮助