把字符串转换成整数

时间:2023-01-03 21:53:27

题目

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。

解题

说明:字符串可能带有正负号,可能含有非数字字符
先判断是否是数字
再判断是正负
再转换

public class Solution {
public int StrToInt(String str) {
char[] chs = str.toCharArray();
if( !isDigit(chs))
return 0;
int digit = 0;
int k = 0;
boolean flag = true;
if(chs[0]=='+' ) k=1;
if(chs[0]=='-' ){
k = 1;
flag = false;
}
for(int i = k;i<= chs.length -1;i++){
digit = digit * 10 + (chs[i] - '0');
}
if(!flag)
digit = - digit;
return digit;
}
public boolean isDigit(char[] chs){
if(chs == null || chs.length == 0)
return false;
int k = 0;
if(chs[0]=='+' || chs[0] =='-') k=1;
for(int i = k;i< chs.length ;i++)
if(!( '0'<= chs[i] && chs[i] <= '9'))
return false;
return true;
}
}

如果有小数怎么办?
检测是否是合法小数
小数点最多只有一个,不可以在最后,可以在第一
先一小数点划分成两个字符串
整数部分按照上面处理得到a
小时部分按照上面处理得到b
下面就是合并
num = a+b/(pow(10,blen))