把字符串转换成整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。

输入描述:

输入一个字符串,包括数字字母符号,可以为空

输出描述:

如果是合法的数值表达则返回该数字,否则返回0

输入例子:

+2147483647

1a33

输出例子:

2147483647

0

分析

首先判断特殊情况:

  1. 字符串为空
  2. 除符号为外含有非数字
  3. 整数大于Integer.MAX_VALUE或小于Integer.MIN_VALUE

如何将字符转换成数字?

str.charAt(index) - ‘0’

代码:

public class Solution {
public int StrToInt(String str) {
int len = str.length(), index = 0, total = 0, sign = 1;
if (len == 0) return 0;
str.trim();
if (str.charAt(index) == '+' || str.charAt(index) == '-') {
sign = str.charAt(index) == '+' ? 1 : -1;
index++;
}
while (index < len) {
int digit = str.charAt(index) - '0';
if (digit > 9 || digit < 0) {
return 0;
}
total = total * 10 + digit;
if (total > Integer.MAX_VALUE || total < Integer.MIN_VALUE) {
return 0;
}
index++;
}
return total * sign;
}
}

欢迎关注公众号: FullStackPlan 获取更多干货

Copyright © 2016 - 2017 LBD's Blog All Rights Reserved.

访客数 : | 访问量 :