1、将整数字符串转成整数值
【题目】
给定一个字符串 str,如果 str 符合日常书写的整数形式,并且属于 32 位整数的范围,返回
str 所代表的整数值,否则返回 0。
【举例】
str="123",返回 123。
str="023",因为"023"不符合日常的书写习惯,所以返回 0。
str="A13",返回 0。
str="0",返回 0。
str="2147483647",返回 2147483647。
str="2147483648",因为溢出了,所以返回 0。
str="-123",返回-123。
【解答】
首先检查str是否符合日常书写的整数形式,具体判断如下:
- 如果str不以 ‘-’ 开头,也不以数字字符开头,如str = ‘A12’,返回false。
- 如果str以 ‘-’ 开头,但是str的长度为1,即str = ‘-’ ,返回false;如果str长度大于1,但是 ‘-’ 后面紧跟着 ‘0’ ,例如str = ‘-0’ 或 '-012 ’ ,返回false。
- 如果str以0开头,但是str的长度大于1,如str = ‘012’ ,返回false;
- 如果经过1~3步骤都没有返回,接下来检查str[1 -N-1]是否都是数字字符,如果有一个不是数字字符,则返回false;如果都是数字字符,则返回true。
具体检查过程代码如下
【代码】
private static boolean isValid(char[] chars) {
if (chars[0]!='-' && (chars[0]<'0' || chars[0]>'9'))
{
return false;
}
if (chars[0] ==