LeetCode 9. 回文数
2020-02-09 23:00 jiayayao 阅读(163) 评论(0) 编辑 收藏 举报判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
Solutions:
1. 可以把int转换为字符串,然后检查字符串是否是回文串即可,但是这样会消耗不少空间
2. 本体的思路是依次对int取左右两边的数值并对比
当整数一致时,继续向中间比较,直至输入整数变为0时,返回true
当整数不一致时,不是回文数,返回false
// twosum.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <vector> #include <map> #include <unordered_map> #include <stdio.h> #include <iostream> #include <algorithm> using namespace std; class Solution { public: bool isPalindrome(int x) { if (x < 0) { return false; } int div = 1; while (x/div >= 10) { div *= 10; } while (x>0) { int left = x / div; int right = x % 10; if (div >= 1 && left == right) { x -= left * div; x -= right; x /= 10; div /= 100; } else { return false; } } if (0 == x) { return true; } return false; } }; int main() { Solution s; bool ret = s.isPalindrome(12121); return 0; }
本文来自博客园,作者:jiayayao,邮箱:jiayayao@126.com,转载请注明原文链接:https://www.cnblogs.com/jiayayao/p/12289299.html