摘要:所以可以采用從右至左遍歷數(shù)字并按照添加順序有小到大生成新的數(shù)字,判斷最終生成的數(shù)字是否和遍歷結(jié)束的數(shù)字相等。這里需要考慮一種特殊情況,即當(dāng)末尾為的情況。
題目要求:判斷一個數(shù)字是否是回數(shù),不能同使用自然數(shù)生成string或數(shù)組那樣的方式實現(xiàn)
回數(shù)的定義:一個自然數(shù),如果該自然數(shù)從左向右讀和從右向左讀都是一樣的數(shù),則這個數(shù)為回數(shù)(隱藏條件,回數(shù)不可以為負(fù)數(shù))
將數(shù)字看成是一個數(shù)組,使用兩個指針分別指向這個數(shù)字的首尾,并且判斷當(dāng)前左右指針上的數(shù)字是否相等,相等則繼續(xù)推進(jìn)直至左右指針相遇
//雙指針,將左右指針分別指向數(shù)字的首位 public boolean isPalindrome(int x) { if(x<0 || (x%10==0&&x!=0)){ return false; } int rightPointer = 0; //獲得右指針的初始值,即數(shù)組的長度 while(Math.pow(10, rightPointer)<=x){ rightPointer++; } rightPointer--; int leftPointer = 0; while(rightPointer>leftPointer){ int left = (int) (x/Math.pow(10, leftPointer)%10); int right = (int) (x/(Math.pow(10, rightPointer))%10); leftPointer++; rightPointer--; if(left!=right){ return false; } } return true; }思路二:判斷生成的數(shù)字是否相等
上面用數(shù)組的思維解決數(shù)字的遍歷是一種方法,但是要先通過一圈遍歷獲得右指針,增加了時間。所以可以采用從右至左遍歷數(shù)字并按照添加順序有小到大生成新的數(shù)字,判斷最終生成的數(shù)字是否和遍歷結(jié)束的數(shù)字相等。
這里需要考慮一種特殊情況,即當(dāng)末尾為0的情況。若不優(yōu)先考慮該情況,就會生成錯誤的結(jié)果
public boolean isPalindrome2(int x) { if(x<0 || (x%10==0&&x!=0)){ return false; } int res = 0; while(x>res){ res = res*10 + (x%10); x /= 10; } return (x==res || x==(res/10)); }
想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會不定期的發(fā)放福利哦~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/66888.html
摘要:題目要求現(xiàn)在有一個字符串,將分割為多個子字符串從而保證每個子字符串都是回數(shù)。我們只需要找到所有可以構(gòu)成回數(shù)的并且得出最小值即可。即將字符作為,將字符所在的下標(biāo)列表作為。再采用上面所說的方法,利用中間結(jié)果得出最小分割次數(shù)。 題目要求 Given a string s, partition s such that every substring of the partition is a ...
摘要:題目要求輸入一個字符串,計算用這個字符串中的值構(gòu)成一個最長回數(shù)的長度是多少。直觀來看,我們立刻就能想到統(tǒng)計字符串中每個字符出現(xiàn)的次數(shù),如果該字符出現(xiàn)次數(shù)為偶數(shù),則字符一定存在于回數(shù)中。這個細(xì)節(jié)需要注意。 題目要求 Given a string which consists of lowercase or uppercase letters, find the length of the...
摘要:回文數(shù)判斷一個整數(shù)是否是回文數(shù)?;匚臄?shù)是指正序從左向右和倒序從右向左讀都是一樣的整數(shù)。示例輸入輸出示例輸入輸出解釋從左向右讀為。因此它不是一個回文數(shù)。 LeetCode9.回文數(shù) JavaScript 判斷一個整數(shù)是否是回文數(shù)?;匚臄?shù)是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數(shù)。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false...
摘要:思路二指針最大長度現(xiàn)在我們從回數(shù)的特點(diǎn)入手。因此,假設(shè)當(dāng)前得到的回數(shù)的最大長度為,我們可以判斷或者是不是回數(shù)。假設(shè)此時指針指向,而已知最大回數(shù)子字符串的長度為。 題目要求 Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s i...
Problem Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121Output: trueExample 2: Input: -121Output: falseExplana...
閱讀 1761·2021-11-25 09:43
閱讀 1800·2021-11-24 10:41
閱讀 3115·2021-09-27 13:36
閱讀 822·2019-08-30 15:53
閱讀 3584·2019-08-30 15:44
閱讀 874·2019-08-30 14:03
閱讀 2585·2019-08-29 16:38
閱讀 1008·2019-08-29 13:23