LeetCode题---String to Integer

题目:String to Integer

下面使用java编程,把String类型的字符串转换成Integer,即将java中的字符串转换成整数类型,如果字符串中包含数字字符并且以数字字符开始(开头的空格忽略),则截取字符串中最左边的一串数字字符转换为整数

如:“111aaa”处理之后的结果为111;

如果被处理的字符串中不包含数字或者没有以数字开始(开头的空格忽略),则处理结果一律为0;

如果处理结果超出了整数范围,则返回Integer的最大值或者最小值;

思路:1.拿到字符串,首先判断是否为null,如果未null则返回0作为处理结果

    2.去除字符串(开头和结尾)的空格,判断字符串长度是否为0,如果为零则返回0作为处理结果

    3.判断字符串的第一个字符是不是+或者-,设置变量sign记录。循环取字符串中的数字,根据该字符的ascll码与字符‘0’的ascll码的差值,确定其对应的Integer类型的值

    4.如果字符串中有非数字,遇到就退出,保留前边的数字

    5.考虑取值溢出情况,如果结果溢出了Integer的取值范围,则返回Integer的最大值或者最小值


代码:

public int  myAtoi(String str){
//判断非空
if(str == null){
return 0;
}
//去掉空格
str.trim();
if(str.length() == 0){
return 0;
}
//判断+或者-
int sign = 1;
int index = 0;//字符str中的脚标
if(str.charAt(index) == '+'){
index++;
}else if(str.charAt(index) == '-'){
index++;
sign = -1;
}
//去的字符串中的数字部分,遇到非数字部分则跳出循环
long number = 0;//记录最终结果
for(; index < str.length(); index++){
if(str.charAt(index)<'0'||str.charAt(index>'9')){
break;
}
number = number*10+(str.charAt(Index)-'0');
if(number>Integer.MAX_VALUE){
break;//结果溢出integer的范围时停止
}
}

//判断溢出情况
if(number*sign > Integer.MAX_VAlUE){
return Integer.MAX_VALUE;
}
if(number*sign < Integer.MIN_VALUE){
return Integer.MIN_VALUE;
}
return (int)number*sign;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值