LeetCode 9 回文數(簡單)

2021-09-25 16:17:44 字數 2035 閱讀 4783

點此去做

題幹:

判斷乙個整數是否是回文數。回文數是指正序和倒序都是一樣的整數。

你能不將數字轉化為字串做嗎?

輸入: 121

-121

10輸出: true

false

false

執行用時:28ms,11.5mb

思想:(最開始想要借用整數翻轉的**,先將整數翻轉後再做相等比較,結果發現用例中有會造成溢位的大數,不得已放棄了這個偷懶的想法)先使用整數翻轉中用到的方法將每一位數字儲存在乙個 vector裡,在遍歷前半部分,檢驗相反位置的數字是否與其相同

實現:首先由題意可知,負數全部為非回文數;然後發現,輸入為 0 時 vector 為空,為了防止空指標報錯,需要將 0 作為一種單獨情況處理;之後的演算法沒有什麼新的東西,照著思路實現即可

bool ispalindrome(int x) 

if (x == 0)

vectorarr;

while(x)

int s = arr.size();

bool res = true;

for (auto i = 0; i <= s / 2; i++)

return res;

}

改良:回文數只要有一對位置檢測錯誤就可以直接返回 false,所以 res 和 && 運算是不必要的

bool ispalindrome(int x) 

if (x == 0)

vectorarr;

while(x)

int s = arr.size();

for (auto i = 0; i <= s / 2; i++)

}return true;

}

執行用時:8ms,8.2mb

思想:官方題解,相當巧妙!為了避免溢位問題,可以不將全部整數翻轉,而是只翻轉一半,和另一半進行相等比較

實現:特殊情況依然單獨拉出來處理;翻轉一半的操作由比較 x 和 reverse 的大小來實現;迴圈結束後,reverse 要麼和 x 位數相同,要麼多一位;位數相同時,代表輸入 x 是偶數字,直接比較 reverse 和 x,如果相等顯然可以說明是回文數;位數不同時,代表輸入 x 是奇數字,reverse 多出來的最後一位正好是輸入 x 的中間位,不影響回文數的判斷,可以用 /10 直接去掉

bool ispalindrome(int x) 

int reverse = 0;

// 翻轉一半的實現,重點理解!

while (x > reverse)

return x == reverse || x == reverse / 10;

}

執行用時:8ms,8.1mb

思想:......原來還是可以用整數翻轉的,但是要使用long long型別避免溢位

bool ispalindrome(int x) 

if(reverse == x)

return true;

else

return false;

}

執行用時:4ms,8mb

思想:主體部分還是第三種方法,但是這第一行...完全看不懂;大家可以參考這篇博文,這一行**的用途就是解除一些預設操作,以此來提高效率(我以後也要加這一行→_→不過還是要理解,不能無腦加哦)

// 提高效率的關鍵**!!!

static int x = ()();

class solution

while (numsrc)

return (numdst == x);

}};

這幾天做下來的感受就是,簡單級別的題目,大家的思路都大致相同;即便是效率最高的那些**,在思路上也差不離,但是會做細節的處理,不會有多餘的變數或運算

LeetCode 9 回文數(簡單)

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。輸入 121 輸出 true 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。輸入 10 輸出 false 解釋 從右向左讀,為 01 因此它不是乙個回...

陣列 Leetcode9回文數

leetcode9 判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 輸入 121 輸出 true 思路1 先變成字串然後對比 class solution return true 思路2 數字對比 class solution while num 0 r...

leetcode 9 回文數 python 實現

判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121輸出 true示例 2 輸入 121輸出 false解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10輸出 false解釋 從右向左讀,為 01...