思路
利用trim()函数去掉前后空格,然后判断是否有'+'或'-'号,如果有则去掉,然后依次向后遍历字符串,直到遇到非数字字符或遍历结束,遍历过程中用一个long型记录当前整数大小
解题过程
最后判断整数大小是否超过整型的边界即可
Code
class Solution {
public int myAtoi(String s) {
s=s.trim();
boolean flag=true;
if(s.length()>0&&s.charAt(0)=='-'){
flag=false;
s=s.substring(1,s.length());
}else if(s.length()>0&&s.charAt(0)=='+'){
s=s.substring(1,s.length());
}
long ans=0;
int id=0;
while(id<s.length()&&0<=s.charAt(id)-'0'&&s.charAt(id)-'0'<=9){
ans=ans*10+s.charAt(id)-'0';
if(flag&&ans>=Integer.MAX_VALUE)return Integer.MAX_VALUE;
if(!flag&&-1*ans<=Integer.MIN_VALUE)return Integer.MIN_VALUE;
id++;
}
if(flag){
if(ans>=Integer.MAX_VALUE)return Integer.MAX_VALUE;
else{
return (int)ans;
}
}else{
ans=-1*ans;
if(ans<=Integer.MIN_VALUE)return Integer.MIN_VALUE;
else return (int)ans;
}
}
}
作者:菜卷
链接:https://leetcode.cn/problems/string-to-integer-atoi/solutions/2923358/zi-fu-chuan-zhuan-huan-zheng-shu-atoi-by-2ce7/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文链接: https://blog.csdn.net/qq_53568730/article/details/142375722