ETH官方钱包

前往
大廳
主題

LeetCode - 2119. A Number After a Double Reversal 解題心得

Not In My Back Yard | 2022-06-19 12:00:07 | 巴幣 0 | 人氣 157

題目連結:


題目意譯:
反轉一個整數代表著要反著看其每一位數。

例如,反轉 2021 將得到 1202、反轉 12300 將得到 321,其中前導零將不會被保留。

給定一個整數 num,將 num 反轉得到 reversed1,接著反轉 reversed1 得到 reversed2。回傳真(True)如果 reversed2 等於 num;反之回傳假(False)。

限制:
0 ≦ num ≦ 10 ^ 6



範例測資:
範例 1:
輸入: num = 526
輸出: true
解釋: 反轉 num 得到 625,接著反轉 625 得到 526,而該數等於 num。

範例 2:
輸入: num = 1800
輸出: false
解釋: 反轉 num 得到 81,接著反轉 81 得到 18,而該數不等於 num。

範例 3:
輸入: num = 0
輸出: true
解釋: 反轉 num 得到 0,接著反轉 0 得到 0,而該數等於 num。


解題思維:
雖然定義了反轉的動作,但是實際上我們不需要實作這個操作。因為可以看到反轉兩次後如果得到跟 num 一樣的數字,則代表過程中沒有出現前導零。也就是說,num 並不是 10 的倍數(除非 num == 0)。

因此直接判斷 num 是否為 10 的倍數或是 num 之值是否為 0。如果是則代表 num 反轉後不會出現前導零(除了數字 0 本身),因此再次反轉只會回到 num 本身,所以回傳真;反之,其代表著反轉 num 後會出現前導零,因此再次反轉之後就會不等於 num 了,所以回傳假。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作