【LeeCode】9. 回文数

题目:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例1:

输入: 121
输出: true

自己的做法:

	public boolean isPalindrome(int x) {
		String str;
		str = Integer.toString(x);
		StringBuilder sb = new StringBuilder(str);
		sb = sb.reverse();
		String str2 = sb.toString();
		return str.equals(str2);
	}

执行用时 :16 ms,在所有 Java 提交中击败了11.60%的用户
内存消耗 :40.2 MB,在所有 Java 提交中击败了5.01%的用户
比较耗时耗空间

官方解答方法如下:

如果x为负数,或者为个位数为0的不正数,则肯定不是回文数。
我们逐渐将x的后边的数,移到res的开头。
直到res>=x,再比较res和x是否相等,或者x是否与res/10相等。

举几个例子:

12321:x=12 res=123(回文,x与res/10相等)
123321:x=123 res=123(回文,x与res相等)
1234:x=12 res=43
5432:x=5 res=234

	public boolean isPalindrome(int x) {
		if (x < 0 || (x % 10 == 0 && x != 0)) {
			return false;
		}
		int tmp = 0;
		int res = 0;
		while (res < x) {
			tmp = x % 10;
			res = res * 10 + tmp;
			x /= 10;
		}
		return x == res || x == res / 10;
	}
发布了57 篇原创文章 · 获赞 0 · 访问量 971

猜你喜欢

转载自blog.csdn.net/Mason97/article/details/104594123
今日推荐