C++ leetcode刷題覆盤3: palindrome number
阿新 • • 發佈:2021-01-11
參考資料:
https://www.cnblogs.com/whale90830/p/10531209.html
相關知識:
1.數值轉字串to_string()函式
2.return直接強制結束函式
解法一
使用字串轉換符to_string,注意return可以提前終止函式。
class Solution { public: bool isPalindrome(int x) { if (x<0){return false;} string x1 = to_string(x); for (int i = 0; i < x1.size()/2; i++) { if(x1[i]!=x1[x1.size()-1-i]){ return false; } } return true; } };
執行速度:
解法二
考慮使用翻轉函式思想,要注意翻轉之後Int資料可能會超出最大範圍。
class Solution { public: bool isPalindrome(int x) { if (x<0){return false;} long res = 0;//也有用long long 的 int x1 = x ; while (x1>0){ res = res*10+x1%10; x1 /= 10; } return res==x? true: false; } };
執行速度:
解法三
參考官方題解,翻轉一半。
class Solution { public: bool isPalindrome(int x) { if (x<0 || (x%10==0&&x!=0)){return false;}//這裡意思是10這種,就直接排除掉 int res = 0; while (x>res){//這裡限制了res不會突破int最大值 res = res*10+x%10; x /= 10; } return res==x|| res/10==x;//針對x可能為奇數也可能為偶數 } };
執行速度:
好像慢一些。
覆盤
資料結構課要開始看起來了。