q7整数反转q8 字符串转换整数q9 回文数q43 字符串相乘q172 阶乘后的零q258 各位相加
q7整数反转
题目传送门
水题。
func reverse(x int) int { num := 0 for x != 0 { num = num * 10 + x % 10 x /= 10 if num < -math.MaxInt32 || num > math.MaxInt32 { return 0 } } return num }
q8 字符串转换整数
题目传送门
题解
跟着题目的要求一步一步来即可,首先通过增加下标清除前导空格。然后判断正负号,判断正负号的时候要注意,得使用else if,不然当字符串前面连续出现-和+号时会出现问题,后面累加数字+判断是否超出区间即可。
func myAtoi(s string) int { i, num, isNegative, n := 0, 0, 1, len(s) for i < n && s[i] == ' ' { i++ } if i < n { if s[i] == '-' { isNegative = -1 i++ } else if s[i] == '+' { i++ } } for i < n && s[i] >= '0' && s[i] <= '9' { num = num * 10 + int(s[i] - '0') if isNegative * num < (-math.MaxInt32 - 1) { return (-math.MaxInt32 - 1) } if isNegative * num > math.MaxInt32 { return math.MaxInt32 } i++ } return isNegative * num }
q9 回文数
题目传送门
题解
反转数字,如果与原数字相等,就是回文数。
func isPalindrome(x int) bool { if x < 0 { return false } num := 0 tmp := x for tmp != 0 { num = num * 10 + tmp % 10 tmp /= 10 } return num == x }
q43 字符串相乘
传送门
题解
高精度乘法。
func multiply(num1 string, num2 string) string { a := make([]int, 111) b := make([]int, 111) c := make([]int, 300) len1 := len(num1) len2 := len(num2) for i := 0; i < len1; i++ { a[len1 - i] = int(num1[i] - '0') } for i := 0; i < len2; i++ { b[len2 - i] = int(num2[i] - '0') } for i := 1; i <= len1; i++ { for j := 1; j <= len2; j++ { c[i + j - 1] += a[i] * b[j] if c[i + j - 1] >= 10 { c[i + j] += c[i + j - 1] / 10 c[i + j - 1] %= 10 } } } var p int if len1 < len2 { p = len1 } else { p = len2 } for i := p; i <= len1 + len2; i++ { if c[i] > 0 { p = i } } str := "" for i := p; i > 0; i-- { str += string(c[i] + '0') } return str }
q172 阶乘后的零
题目传送门
题解
要求使用对数时间复杂度的算法来求解,是一道数学题。5和任何偶数相乘都会产生0,所以只需要统计数n里面含有5的数量就可以了。
func trailingZeroes(n int) int { res := 0 for n > 0 { res += n / 5 n /= 5 } return res }
q258 各位相加
题目传送门
题解
使用以下解法既简单又快,但是我还看到一位大佬更加简单的做法。
func addDigits(num int) int { for num >= 10 { num = num % 10 + num / 10 } return num }
通过找规律和总结去求解:
https://leetcode-cn.com/problems/add-digits/solution/san-bu-qing-song-li-jie-o1-by-data-t/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)