摘要:反轉比較法復雜度時間空間思路回文數有一個特性,就是它反轉后值是一樣的。代碼逐位比較法復雜度時間空間思路反轉比較有可能會溢出,但我們遍歷每一位的時候其實并不用保存上一位的信息,只要和當前對應位相等就行了。首先,負數是否算回文。
Palindrome Number
反轉比較法 Reverse and Compare 復雜度Determine whether an integer is a palindrome. Do this without extra space.
時間 O(n) 空間 O(1)
思路回文數有一個特性,就是它反轉后值是一樣的。所以我們可以先將其反轉,然后比較反轉數和原數是否相等。該方法的問題在于溢出的判斷和處理,我們可以參考反轉整數中的幾種處理方法。
代碼javapublic class Solution { public boolean isPalindrome(int x) { long reverse = 0, original = x; if(x<0){ return false; } while(x>0){ reverse *= 10; reverse += x % 10; x /= 10; } return original == reverse; } }逐位比較法 One By One 復雜度
時間 O(n) 空間 O(1)
思路反轉比較有可能會溢出,但我們遍歷每一位的時候其實并不用保存上一位的信息,只要和當前對應位相等就行了。所以我們可以遍歷一遍先算出數的長度,再遍歷一遍同時對比前后的對應位。
代碼javapublic class Solution { public boolean isPalindrome(int x) { if(x < 0){ return false; } int digits = 1; int original = x; // 計算當前數的位數,個位數不用計算,已經默認為1 while(x > 9){ digits *= 10; x /= 10; } // 逐位比較 x = original; while(x > 0){ int msd = x / digits; int lsd = x % 10; if(msd != lsd){ return false; } // 去除最高位和最低位 x -= msd * digits; x /= 10; digits /= 100; } return true; } }后續 Follow Up
Q:在答題之前我需要知道些什么?
A:因為回文的定義原本只適用于字符串,所以我們要先問清楚數字回文是如何定義的。首先,負數是否算回文。其次,在計算回文時,我們應該按十進制算還是其他進制,如二進制。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64384.html
摘要:最后,我們判斷一開始的兩種情況,并返回或者即可。本許可協議授權之外的使用權限可以從處獲得。 Create by jsliang on 2019-05-22 19:30:42 Recently revised in 2019-05-23 11:42:52 一 目錄 不折騰的前端,和咸魚有什么區別 目錄 一 目錄 二 前言 三 解題 ?3.1 解題 - 數組操作 ...
摘要:首尾比較法復雜度時間空間,為所求的長度思路先求記為的長度根據長度制造掩碼循環當當最高位等于最低位還有數字等待判斷最高位通過掩碼和整除取得,最低位通過取余取得判斷過后更新掩碼,刪掉最高位,刪掉最低位注意求長度的如何取得一個的最高位假設答設置一 Palindrome Number Determine whether an integer is a palindrome. Do this w...
摘要:有一點需要注意的是,負數不算作回文數。而第題當時的方法是,對整數取除的余數,即是當前整數的最后一位。那么它翻轉后一半的數字之后,應該和前半段的數字相等,我們將采用這種思路進行解題。 題目詳情 Determine whether an integer is a palindrome. Do this without extra space.題目要求我們在不占用額外空間的前提下,判斷一個整...
摘要:最笨的方法就是用的解法,找出所有的,然后再用中判斷回文的方法來判斷結果中是否有回文。而中心對稱點如果是字符,該字符會是奇數次,如果在兩個字符之間,則所有字符都是出現偶數次。 Palindrome Permutation Given a string, determine if a permutation of the string could form a palindrome. F...
摘要:難度本題要求判定一個整數是否為回文數字比如都是回文數字但是不是回文數字所有負數都不是回文數字本題還有一個關鍵要求不能使用額外空間我理解這里的額外空間是指堆空間在程序中不能去額外的什么變量更不用說提升空間復雜度直接上的解法解法 Determine whether an integer is a palindrome. Do this without extra space. Some ...
閱讀 1315·2021-09-27 13:56
閱讀 2346·2019-08-26 10:35
閱讀 3508·2019-08-23 15:53
閱讀 1857·2019-08-23 14:42
閱讀 1239·2019-08-23 14:33
閱讀 3572·2019-08-23 12:36
閱讀 1954·2019-08-22 18:46
閱讀 1006·2019-08-22 14:06