把字符串转换成整数 (用位操作)
来源:互联网 发布:js清空元素数组 编辑:程序博客网 时间:2024/04/27 21:51
把字符串转换成整数
- 问题:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
方法一(自己写的直白的方法,抛砖引玉)
class Solution {public://char转换成intint CharToInt(char c){ int res; res = c - '0'; if (res<0 || res>9) return 0; return res;}//判断一个char是不是数字 bool is_num(char c){ if (c - '0'>=0 && c - '9'<=0) return true; else return false;}// int StrToInt(string str) { int len = str.size(); if (len <= 0) return 0; string num = "";//存所有数字 bool flag = true;//标志正负 for (int i = 0; i < len; i++){ if (is_num(str[i])) num += str[i]; else if (str[i] == '-') flag = false; else if (str[i] == '+') flag = true; else return 0;//如果不是数字就会返回0,这是测试用例的原因 } int size = num.size(); int res = 0; for (int i = size; i; i--){ int large = 1; for (int j = i - 1; j; j--) large *= 10; res += CharToInt(num[size - i])*large; //这个是可以优化的地方 } if (flag == false) res *= -1; return res;}};
方法二(位操作,的简单算法)
class Solution {public: int StrToInt(string str) { int res = 0, n = str.size(), s = 1; if (!n) return 0; if (str[0] == '-') s = -1; for (int i = (str[0] == '-' || str[0] == '+') ? 1 : 0; i < n; ++i){ if (!('0' <= str[i] && str[i] <= '9')) return 0; res = (res << 1) + (res << 3) + (str[i] & 0xf);//res=res*10+str[i]-'0'; } return res * s; };
0 0
- 把字符串转换成整数 (用位操作)
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数 .
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- 把字符串转换成整数
- Linux下文本文件中^M 符号问题的解决
- php之smarty学习三
- txt文件导入mysql
- C函数和宏中的可变参数
- C# 获取字符串对应变量名
- 把字符串转换成整数 (用位操作)
- win10系统上使用utorrent的问题
- matab 数组问题
- online_judge_1112
- Bulb Switcher
- bzoj1031(后缀数组)
- Hibernate 学习代码/笔记 (二)
- 挂死问题定位之方法一
- JDK小技巧