返回介绍

49.把字符串转换为整数

发布于 2023-08-30 21:54:39 字数 1063 浏览 0 评论 0 收藏 0

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

思路:注意符号与边界。

public class Solution {
  public int StrToInt(String str) {
    if(str.length() == 0) return 0;
    int flag = 1;//表示符号,正数为1,负数为-1
    int i = 0;//指针,用于记录第一位是否为符号
    int result = 0;
    if(str.charAt(0) == '-') flag = -1;
    if(str.charAt(0) == '-' || str.charAt(0) == '+') i++;
    for(int j = i; j < str.length(); j++){
      char num = str.charAt(j);
      if(isNum(num)){
        int cur = num - '0';
        //正数的边界如下
        if(flag > 0 && (result > Integer.MAX_VALUE/10 || (result == Integer.MAX_VALUE/10 && cur > 7))){
          return 0;
        }
        //负数的边界如下
        if(flag < 0 && (result > Integer.MAX_VALUE/10 || (result == Integer.MAX_VALUE/10 && cur > 8))){
          return 0;
        }
        result = result*10 + cur;
      }else{
        return 0;
      }
    }
    return flag*result;
  }
  private boolean isNum(char c){
    return c >= '0' && c <= '9';
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文