最近一系列打击(自尊心的挫折),深刻感觉到自己的算法很烂,于是下决心刷一些算法题,由于算法菜鸟,从easy开始,步入我的leetcode修炼之路,希望有志同道合的朋友能跟我一起,互相鼓励互相学习。
题目:Determine whether an integer is a palindrome. 意思就是判断一个整数是否为 回文数
代码中都有详细的注释,希望大家多多指教,可以留言讨论,萌新上路,多多指教。
package com.yu.sun.leetcode.palindrome;/** * 【题目】Determine whether an integer is a palindrome. * Do this without extra space. * 解题思路: * 1.回文:类似于 1,121,23432这种从左往右和从右往左看都一样的数字 * 2.先确定输入的数字是几位,再将高位和低位比较,相同的为回文 * @author yu.sun */public class Palindrome { public static void main(String []arg){ Palindrome palindrome = new Palindrome(); int x =10579; boolean ret = palindrome.isPalindrome(x); System.out.PRintln(x+(ret==true ? "是":"不是")+"回数"); } /** * 判断输入的数字是否为回数: * 依次拿高位和对应的低位数去比较,如果相等则为回数 * @param n * @return */ public boolean isPalindrome(int n){ int digits = returnDigits(n); for(int k=1;k<digits;k++){ int high = digits-k+1; int low = k; if(getDigits(n, low) != getDigits(n, high)){ return false; } } return true; } /** * 判断输入的数x是几位数,做法如下: * 【digits】表示x的位数 * 在x不等于0的情况下,不断去循环与10取模 * digits = 0(int会将小数转为整数0.9=>0 ,1.7=>1)表示能不能被10整除 * @param x * @return */ public int returnDigits(int x){ int position = x; int digits = 0; while(position!=0){ position /= 10; digits ++; } return digits; } /** * 查找数字i的第j位数为digitsNum,1为最低位 * @param i * @param j * @return */ public int getDigits(int i,int j){ int digitsNum = (int)(i / Math.pow(10, j-1)%10); return digitsNum; }}新闻热点
疑难解答