文章目錄
題目描述
思路 && 代碼
- 首先,把情況劃分一下:
- 非正常值,直接給 0(這個實際上可以劃分到2的代碼中)
- 可取正常值的情況
- 溢出的情況(上溢 && 下溢)
- 然后,分情況逐個寫即可
class Solution {public int strToInt(String str
) {char[] strArr
= str
.trim().toCharArray();if(strArr
.length
== 0) {return 0;}int ans
= 0;int index
= 0;boolean isNegative
= false;if (strArr
[0] == '-' || strArr
[0] == '+') {index
++;isNegative
= (strArr
[0] == '-');}for (; index
< strArr
.length
&& strArr
[index
] >= '0' && strArr
[index
] <= '9'; index
++) {if (isNegative
) {if (ans
> 214748364 || (ans
== 214748364 && strArr
[index
] > '8')) {return -2147483648;}}else if (ans
> 214748364 || (ans
== 214748364 && strArr
[index
] > '7')) {return 2147483647;}ans
*= 10;ans
+= strArr
[index
] - '0';}if (isNegative
) {ans
*= -1;}return ans
;}
}
二刷
class Solution {public int strToInt(String str
) {char[] arr
= str
.trim().toCharArray();if(arr
.length
== 0) {return 0;}int isNegative
= arr
[0] == '-' ? 1 : 0;int ans
= 0;if(arr
[0] >= '0' && arr
[0] <= '9') {ans
= arr
[0] - '0';}else if(arr
[0] != '+' && arr
[0] != '-') {return ans
;}for(int i
= 1; i
< arr
.length
; i
++) {if(arr
[i
] < '0' || arr
[i
] > '9') {break;}if((ans
> 214748364) || (ans
== 214748364 && arr
[i
] - '0' > 7 + isNegative
)) {ans
= isNegative
== 1 ? Integer.MIN_VALUE
: Integer.MAX_VALUE
;break;}ans
*= 10;ans
+= arr
[i
] - '0';}return isNegative
== 1 ? -1 * ans
: ans
;}
}
總結
以上是生活随笔為你收集整理的【LeetCode笔记】剑指 Offer 67. 把字符串转换成整数 (Java、字符串)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。