8、LeetCode--String to Integer (atoi)
2016-05-06 11:11
381 查看
question:Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
问题的大意:将字符串换成integar,需要注意的是输入的格式,我会在代码中进行讲解
方法一:
与方法二的思想是一样的,代码的解释可参照方法二
方法二:
采用指针的方式来遍历字符串,相比方法一更简洁
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
问题的大意:将字符串换成integar,需要注意的是输入的格式,我会在代码中进行讲解
方法一:
与方法二的思想是一样的,代码的解释可参照方法二
int myAtoi(char* str) { int len = strlen(str); int max = INT_MAX; int min = INT_MIN; long num = 0; int i = 0; int flag = 1; while(str[i] == ' ' || str[i] == '\t') i++; if(str[i] == '+' || str[i] == '-') { if(str[i] == '-') flag = 0; } else { if(str[i] >= '0' && str[i] <= '9') num = str[i] - '0'; else return 0; } for(i = i+1; i < len; i++) { if(str[i] >= '0' && str[i] <= '9') { num = 10 * num + str[i] - '0'; if(flag && (num > max)) return max; if(!flag && (-num < min)) return min; } else break; } if(!flag) num = -num; return (int)num; }
方法二:
int myAtoi(char* str) { char *p = str; int max = INT_MAX; int min = INT_MIN; long num = 0; // 注意类型要大于int类型 int flag = 1; // 作为正负的标志 while(*p == ' ' || *p == '\t') // 过滤掉字符串开始的无用字符 p++; if(*p == '+' || *p == '-') { if(*p == '-') // 如果为负数,标记为0 flag = 0; } else { if(*p >= '0' && *p <= '9') num = *p - '0'; else // 格式不符合,返回0 return 0; } for(++p; *p; p++) { if(*p >= '0' && *p <= '9') { num = 10 * num + *p - '0'; if(flag && (num > max)) // 为正数,且当前num大于int类型上界,返回INT_MAX return max; if(!flag && (-num < min)) // 为负数,且当前num小于int类型下界,返回INT_MIN return min; } else break; } if(!flag) // 为负数,反转 num = -num; return (int)num; }
采用指针的方式来遍历字符串,相比方法一更简洁
相关文章推荐
- Good mood!!!
- 在线书籍收集
- Swift 基本语法
- C++实验4-1
- DelayQueue的原理和使用浅谈
- LIB和DLL的区别与使用
- swift使用swifthttp
- 查看服务器类型
- HoloLens开发手记 - 语音输入 Voice input
- 通过jersey-client客户端调用Jersey的Web服务模拟CURD
- windows下安装Java 和 scala
- ios 中autolayout multipli属性的设置
- 康托展开(求该排列是第几大的) 模板
- Java 对数据库连接 的封装
- 设计模式六大原则(4):接口隔离原则
- ParallaxHeaderViewPager源码解析
- Apparmor——Linux内核中的强制访问控制系统
- Leetcode 303 Range Sum Query - Immutable
- C++作业5-多继承
- Android 常用组件申明及使用简集