考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默响起来一个声音:”乔戈里峰”
每天一道剑指offer-把字符串转换成整数 https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&tPage=3&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入
+2147483647
1a33输出
2147483647
0思路
代码
public class Solution {
public int StrToInt(String str) {
if(str == null || str == "" || str.equals("+") || str.equals("-"))
return 0;
int flag = 0;
long sum = 0;
char [] strArray = str.toCharArray();
for(int i=0;i<strArray.length;i++)
{
if(strArray[0] == '-' && i == 0)
{//是负数记录下来
flag = 1;
continue;
}
if(strArray[0] == '+' && i == 0)
{//是整数
continue;
}
if(!judge(strArray[i]))//判断是不是正常的数
return 0;
sum = sum * 10 + strArray[i] - '0';
}
if(flag == 1)
{
sum = sum * (-1);
if(sum < Integer.MIN_VALUE)
return 0;//判断越界没
return (int)sum;
}
if(sum > Integer.MAX_VALUE)
return 0;//判断越界没
return (int)sum;
}
private boolean judge(char ch)
{//利用ASC码,不在这个范围内的ASC码直接返回false,说明不是正常的数
int number = ch - '0';
if(number >= 0 && number <= 9)
{
return true;
}
return false;
}
}