欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 算法-字符串-8.字符串转换整数

算法-字符串-8.字符串转换整数

2025/6/8 12:49:43 来源:https://blog.csdn.net/2301_76799207/article/details/144312984  浏览:    关键词:算法-字符串-8.字符串转换整数

一、题目

二、思路解析

        1.思路:

                依次遍历,查看当前字符是否在规定范围内

        2.常用方法:

                1.trim(),去字符串的首尾空字符

s=s.trim();

                2.substring(beginIndex),截断字符串,得到新的字符串是[1,s.length()-1]

s=s.substring(1);

                3.startsWith("+"),检查字符串是否以指定的前缀开头,注意:参数不能是‘+’

if(s.startsWith("+"))

        3.核心逻辑:

               1.首先去掉字符串中的符号(+/-),用smyble变量来表示其是+/-;

int smyble=1;//默认为正数//1.情况一:为负数
if(s.startWith("-")){symble=-1;s=s.substring(1);//去除掉字符串s的第一个字符“-”
}
//2.情况二:为正数
else if(s.startWith("+"){//因为默认为正数s=s.substring(1);//去除掉字符串s的第一个字符“+”
}//情况三:其余情况是字符串s首字符非+/-,就默认为“+”

                2. 统计有效数字

                        √.注意事项:

                                a.res必须为long值,因为long的范围比int大,为了防止溢出

                                b.比较是否超过范围界限时,需要加入符号

long res=0;for(int i=0;i<s.length();i++){int cnt=s.charAt(i)-'0';if(cnt>=0&&cnt<10){res=res*10+cnt;//判断是否在规定的int范围内,如果超过了就返回Integer的最大和最小值//注意事项:比较的值是res*symble,如果比较的是res,res只能是正数if(smyble*res>Integer.MAX_VALUE){return Integer.MAX_VALUE;
}if(smyble*res<Integer.MIX_VALUE){return Integer.MIX_VALUE;
} continue; //进入下一个循环
}else{break;    //退出循环
}}

                3.返回结果,要强制,因为res为long类型,同时也要带上符号

return (int)res*symble;

 

三、代码实现

class Solution {public int myAtoi(String s) {s=s.trim();//去掉字符串前后的空白格if(s==null||s.length()==0){return 0;}int smybol=1;if(s.startsWith("-")){smybol=-1;s=s.substring(1);}else if(s.startsWith("+")){s=s.substring(1);}long res=0;for(int i=0;i<s.length();i++){int cnInt=s.charAt(i)-'0';if(cnInt>=0&&cnInt<10){res=res*10+cnInt;if(res*smybol>Integer.MAX_VALUE){return Integer.MAX_VALUE;}else if(res*smybol<Integer.MIN_VALUE){return Integer.MIN_VALUE;}else{continue;}}break;}return (int) res*smybol;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词