考试结束字符串转换为整数,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默响起来一个声音:”乔戈里峰”
题目
每天一道剑指offer-把字符串转换成整数
题目详述
将一个字符串转换成一个整数(实现.()的功能,但是不符合数字要求时返回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;
}
}
结束语
作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的微信公众号:程序员乔戈里字符串转换为整数,公众号有3T编程资源,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道打卡群与技术交流群,欢迎关注。