本文主要是介绍Leetcode刷题 2020.7.20,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
7.整数反转
class Solution {
public:int reverse(int x) {long long f = x < 0 ? -1: 1, k = x;if(x < 0) k*=-1; //精髓vector<int> ans;while(k){ans.push_back(k%10);k/=10;}k = 0;for (auto t : ans) k*=10, k += t; k*=f;return k <= 1ll*INT_MAX && k >= 1ll*INT_MIN ? k : 0;}};
更高级的代码,抓住的重点是int能表示的有符号数的特点来判断,不用long long。
class Solution {
public:int reverse(int x) {int k = 0, t;while(x) {t = x%10;x /= 10;if(k > INT_MAX/10 || k == INT_MAX/10 && t > 7) return 0;else if(k < INT_MIN/10 || k == INT_MIN/10 && t < -8) return 0;else k *= 10, k += t; }return k;}};
大佬细节写法。。
class Solution {
public:int reverse(int x) {long long res=0,pop;while(x!=0){pop=x%10;res=res*10+pop;x=x/10;}if(res>INT_MAX||res<INT_MIN)return 0;return int(res);}};
8.字符串转换整数
class Solution {
public:int myAtoi(string s) {int n = s.size();long long ans = 0;for (int i = 0; i < n; i++) {if(s[i] == ' ') continue;if(s[i] <= '9' && s[i] >= '0' || s[i] == '+'){if(s[i] == '+') i++;while(i < n && s[i] <= '9' && s[i] >= '0'){ans = ans*10 + s[i] - '0';if(ans >= INT_MAX) return INT_MAX;i++;}return (int)ans;}else if(s[i] == '-'){i++;while(i < n && s[i] <= '9' && s[i] >= '0'){ans = ans*10 - (s[i] - '0');if(ans <= INT_MIN) return INT_MIN;i++;}return (int)ans;}else return 0;}return 0;}
};
此题正规解法!!还待学习!!!!!
9.回文数
重点学函数return的处理!!
暴力代码:
class Solution {
public:bool isPalindrome(int x) {if(x < 0) return 0;int ans = 0, xx = x;while(xx){if(ans > INT_MAX/10 || ans == INT_MAX/10 && x%10 > 7)return 0;ans = ans*10 + xx%10;xx/=10;}if(ans == x)return 1;else return 0;}
};
牛逼代码(避免了溢出int范围的判断):
注意0的判断!!!!!!!!!!!!!!!!!!!掌握基本功!!
class Solution {
public:bool isPalindrome(int x) {if(x < 0 || x && !(x%10)) return 0;int ans = 0;while(x > ans){ans = ans*10 + x%10;x/=10;}return ans == x || ans/10 == x;}
};
这篇关于Leetcode刷题 2020.7.20的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!