现在的位置: 首页 > 综合 > 正文

atoi的java实现

2017年04月06日 ⁄ 综合 ⁄ 共 732字 ⁄ 字号 评论关闭

atoi是字符串转换到整形的函数,用java如何实现呢?看起来简单,陷阱很多,在leetcode网站,这个函数能够写得完全正确的概率只有14%。


atoi的需求是这样的:

  1. 如果前面有空格,需要剔除空格;

  2. 剔除空格后,第一个字符串如果是+号,认为是正数;如果是-号,认为是负数;

  3. 后面的字符如果不是数字,那么返回0,如果是数字,返回实际的数字。遇到不是数字的字符,转换结束。


public class Solution {

public int atoi(String str) {

//这里要小心,需要判断有效性

if(str==null || str.length() == 0)

{

return 0;

}

int nlen = str.length();

double sum = 0;

int sign = 1;

int j = 0;

//剔除空格

while(str.charAt(j) == ' ')

j++;

//判断正数和负数

if(str.charAt(j) == '+')

{

sign = 1;

j++;

}else if(str.charAt(j) == '-')

{

sign = -1;

j++;

}

for(int i=j;i<nlen;i++)

{

char current = str.charAt(i);

if(current >= '0' && current <= '9')

{

sum = sum*10 + (int)(current - '0');

}

else

{

break;//碰到非数字,退出转换

}

}

sum = sum*sign;

//这里要小心,需要判断范围

if (sum > Integer.MAX_VALUE) {

sum = Integer.MAX_VALUE;

} else if (sum < Integer.MIN_VALUE) {

sum = Integer.MIN_VALUE;

}

return (int)sum;

}

}

抱歉!评论已关闭.