摘要:首尾比較法復(fù)雜度時間空間,為所求的長度思路先求記為的長度根據(jù)長度制造掩碼循環(huán)當(dāng)當(dāng)最高位等于最低位還有數(shù)字等待判斷最高位通過掩碼和整除取得,最低位通過取余取得判斷過后更新掩碼,刪掉最高位,刪掉最低位注意求長度的如何取得一個的最高位假設(shè)答設(shè)置一
Palindrome Number
首尾比較法 復(fù)雜度Determine whether an integer is a palindrome. Do this without extra space.
O(Length) 時間 O(1) 空間, Length為所求Integer的長度
思路先求Integer (記為x) 的長度len
根據(jù)長度制造掩碼 (mask)
循環(huán)當(dāng):當(dāng)最高位等于最低位 && x還有數(shù)字等待判斷(x != 0)
最高位通過掩碼和整除取得(646/100=6),最低位通過取余取得(646%10=6)
判斷過后更新掩碼(mask/=100),刪掉最高位(x%=mask),刪掉最低位(x/=10)
注意求Integer長度的utility:
int len = 0; while (x != 0) { len++; x /= 10; } return len;
如何取得一個Integer的最高位?假設(shè)x = 688
答:x / mask. 設(shè)置一個和x位數(shù)一樣的mask,mask = 100,然后用x/mask,表示x里面有幾個mask,即是最高位數(shù)字. 688里有6個100,即為6.
如何刪去一個Integer的最高位?假設(shè)x = 688
答:x = x % mask. 還是用這個mask,用 x = x % mask 即可得到688除以100的余數(shù),這個余數(shù)其實等于刪掉了x的最高位剩下的數(shù).
如何取得一個Integer的最低位?假設(shè)x = 688
答:x % 10.
如何刪去一個Integer的最低位?假設(shè)x = 688
答:x = x / 10.
public class Solution { public boolean isPalindrome(int x) { if (x < 0) return false; int len = getIntegerLength(x); int mask = (int)Math.pow(10, len - 1); while (x != 0) { if (x % 10 != x / mask) return false; x %= mask; //去最高位 x /= 10; //去個位 mask /= 100; //mask要丟掉兩個零,不是一個! } return true; } public int getIntegerLength(int x) { int len = 0; while (x != 0) { x /= 10; len++; } return len; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64781.html
摘要:反轉(zhuǎn)比較法復(fù)雜度時間空間思路回文數(shù)有一個特性,就是它反轉(zhuǎn)后值是一樣的。代碼逐位比較法復(fù)雜度時間空間思路反轉(zhuǎn)比較有可能會溢出,但我們遍歷每一位的時候其實并不用保存上一位的信息,只要和當(dāng)前對應(yīng)位相等就行了。首先,負數(shù)是否算回文。 Palindrome Number Determine whether an integer is a palindrome. Do this witho...
摘要:最后,我們判斷一開始的兩種情況,并返回或者即可。本許可協(xié)議授權(quán)之外的使用權(quán)限可以從處獲得。 Create by jsliang on 2019-05-22 19:30:42 Recently revised in 2019-05-23 11:42:52 一 目錄 不折騰的前端,和咸魚有什么區(qū)別 目錄 一 目錄 二 前言 三 解題 ?3.1 解題 - 數(shù)組操作 ...
摘要:有一點需要注意的是,負數(shù)不算作回文數(shù)。而第題當(dāng)時的方法是,對整數(shù)取除的余數(shù),即是當(dāng)前整數(shù)的最后一位。那么它翻轉(zhuǎn)后一半的數(shù)字之后,應(yīng)該和前半段的數(shù)字相等,我們將采用這種思路進行解題。 題目詳情 Determine whether an integer is a palindrome. Do this without extra space.題目要求我們在不占用額外空間的前提下,判斷一個整...
摘要:最笨的方法就是用的解法,找出所有的,然后再用中判斷回文的方法來判斷結(jié)果中是否有回文。而中心對稱點如果是字符,該字符會是奇數(shù)次,如果在兩個字符之間,則所有字符都是出現(xiàn)偶數(shù)次。 Palindrome Permutation Given a string, determine if a permutation of the string could form a palindrome. F...
摘要:難度本題要求判定一個整數(shù)是否為回文數(shù)字比如都是回文數(shù)字但是不是回文數(shù)字所有負數(shù)都不是回文數(shù)字本題還有一個關(guān)鍵要求不能使用額外空間我理解這里的額外空間是指堆空間在程序中不能去額外的什么變量更不用說提升空間復(fù)雜度直接上的解法解法 Determine whether an integer is a palindrome. Do this without extra space. Some ...
閱讀 2227·2021-11-15 11:39
閱讀 983·2021-09-26 09:55
閱讀 925·2021-09-04 16:48
閱讀 2831·2021-08-12 13:23
閱讀 919·2021-07-30 15:30
閱讀 2456·2019-08-29 14:16
閱讀 886·2019-08-26 10:15
閱讀 526·2019-08-23 18:40