首页 > 代码库 > 实现atoi函数
实现atoi函数
atoi函数最关键的地方是想好测试用例:
- 输入为空字符串,输出为0;
- 输入字符串大小超过INT_MAX输出INT_MAX;
- 输入字符串大小小于INT_MIN输出INT_MIN;
- 输入字符串中含有不规则字符,中断atoi, 如"01a4" 输出1;
- 输入字符串开头和结尾含有空格,忽略空格,如输入" +01 "输出1;
- 输入字符串开头除空格以外如果是"+"和"-",视为正确输入。
class Solution {public: int atoi(const char *str) { if(strlen(str)==0) return 0; double result=0; int j=0; while(str[j]==‘ ‘) //忽略字符串首空格 { j++; } int last = strlen(str)-1; int last_space = 0; while(str[last]==‘ ‘) //忽略字符串尾空格 { last--; last_space++; } if(str[j]==‘+‘) { for(int i=j+1;i<strlen(str)-last_space;i++) { if(str[i]>=‘0‘&&str[i]<=‘9‘) { result = result*10 + (str[i]-‘0‘); } //如果遇到非法字符,终止转换 else { break; } } if(result>INT_MAX) { return INT_MAX; } else { return result; } } if(str[j]==‘-‘) { for(int i=j+1;i<strlen(str)-last_space;i++) { if(str[i]>=‘0‘&&str[i]<=‘9‘) { result = result*10 + (str[i]-‘0‘); } else { break; } } if(result*(-1) < INT_MIN) { return INT_MIN; } return result*(-1); } for(int i=j;i<strlen(str)-last_space;i++) { if(str[i]>=‘0‘&&str[i]<=‘9‘) { result = result*10 + (str[i]-‘0‘); } else { break; } } if(result>INT_MAX) { return INT_MAX; } if(result*(-1) < INT_MIN) { return INT_MIN; } return result; }};
实现atoi函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。