转换字符串到整数

转换字符串到整数

实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。

样例

"10" =>10

"-1" => -1

"123123123123123" => 2147483647

"1.0" => 1

标签

字符串处理 基本实现 优步

  1 class Solution {
  2 public:
  3     /**
  4      * @param str: A string
  5      * @return An integer
  6      */
  7     int atoi(string str) {
  8         // write your code here
  9         str = eraseSpace(str);
 10         int size=str.size();
 11
 12         if(size <= 0)
 13             return 0;
 14
 15         if(str[0]<=‘9‘ && str[0]>=‘0‘)  {
 16             int num=str[0]-‘0‘, i, dec=str[0]-‘0‘;
 17             for(i=1; i<size; i++) {
 18                 if(str[i]<=‘9‘ && str[i]>=‘0‘)  {
 19                     dec = num;
 20                     num = num * 10;
 21                     if(isCrossBorder(num, dec))
 22                         return 2147483647;
 23
 24                     dec = num;
 25                     num += str[i]-‘0‘;
 26                     if(isCrossBorder(num, dec))
 27                         return 2147483647;
 28                 }
 29                 else  {
 30                     return num;
 31                 }
 32             }
 33             return num;
 34         }
 35         else if(str[0] == ‘+‘)  {
 36             int num=0, i, dec=0;
 37             for(i=1; i<size; i++) {
 38                 if(str[i]<=‘9‘ && str[i]>=‘0‘)   {
 39                     dec = num;
 40                     num = num * 10;
 41                     if(isCrossBorder(num, dec))
 42                         return 2147483647;
 43
 44                     dec = num;
 45                     num += str[i]-‘0‘;
 46                     if(isCrossBorder(num, dec))
 47                         return 2147483647;
 48                 }
 49                 else {
 50                     return num;
 51                 }
 52             }
 53             return num;
 54         }
 55         else if(str[0] == ‘-‘)  {
 56             int num=0, i, dec=0;
 57             for(i=1; i<size; i++)  {
 58                 if(str[i]<=‘9‘ && str[i]>=‘0‘)  {
 59                     dec = num;
 60                     num = num * 10;
 61                     if(isCrossBorder(num, dec))
 62                         return -2147483648;
 63
 64                     dec = num;
 65                     num += str[i]-‘0‘;
 66                     if(isCrossBorder(num, dec))
 67                         return -2147483648;
 68                 }
 69                 else  {
 70                     return num*-1;
 71                 }
 72             }
 73             return num*-1;
 74         }
 75         else  {
 76             return 0;
 77         }
 78     }
 79
 80     bool isCrossBorder(int num1, int num2)  {
 81         if(num1 < num2)
 82             return true;
 83         return false;
 84     }
 85
 86   string eraseSpace(string str) {
 87         int size=str.size(),i=0,mark=0;
 88         string result;
 89
 90         for(i=0; i<size; i++)   {
 91             if(str[i]==‘ ‘ && mark==0) {
 92                 continue;
 93             }
 94             else if(str[i]!=‘ ‘ && mark==0)   {
 95                 mark = 1;
 96                 result += str[i];
 97             }
 98             else if(str[i]!=‘ ‘ && mark==1)   {
 99                 mark = 1;
100                 result += str[i];
101             }
102             else if(str[i]==‘ ‘ && mark==1) {
103                 break;
104             }
105         }
106         return result;
107     }
108 };
时间: 2024-10-05 02:50:39

转换字符串到整数的相关文章

【LintCode】转换字符串到整数

问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数. 样例 "10" =>10 "-1" => -1 "123123123123123" => 2147483647 "1.0" => 1 问题分析: 这道题特别恶心,虽然思路很

数组-08. 字符串转换成十进制整数(15)

1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 string s; 6 int i,sum=0; 7 bool flag=false,f=false; 8 getline(cin,s); 9 for(i=0;s[i]!='#';++i){ 10 if(s[i]=='-'&&!flag) 11 f=true; 12 else if(s[i]<='9'&a

数组-08. 字符串转换成十进制整数

数组-08. 字符串转换成十进制整数(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果过滤后字符串的首字符为“-”,代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内.

5-2?字符串转换成十进制整数

5-2 字符串转换成十进制整数   (15分) 输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出.如果在第一个十六进制字符之前存在字符"-",则代表该数是负数. 输入格式: 输入在一行中给出一个以#结束的非空字符串. 输出格式: 在一行中输出转换后的十进制数.题目保证输出在长整型范围内. 输入样例: +-P-xf4+-1!# 输出样例: 这个题有一个坑点: 就是如果是0的话前面没有负号 -390

Leetcode8---&gt;String to Integer(实现字符串到整数的转换)

题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“    123   ” = 123: 2.   字符串“+123” = 123: 3.   字符串“-123” = -123: 4.   字符串“-” = 0:“+” = 0: 5.   字符串“123-” = 123: 6.   字符串“21474836478” = 2147483647(Integer.MAX_VALUE) 7.   其余情况都是非法输入,一律返回0: 代码如下: 1 public

[PHP] 算法-将一个字符串转换成一个整数的PHP实现

题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0. 示例1 输入 +2147483647 1a33 输出 2147483647 0 思路: 1.处理负号 2.处理正号 3.字符串中包含非数字字符的直接返回0 4.'0'字符的ascii码是48 4.遍历字符串,从0位置开始扫描,当前数字字符ascii码减去'0'字符ascii码

c程序十六进制字符串转换为整数与反转

字符串转整数使用sscanf int value = 0; char *buf = "1d5ce"; sscanf (buf, "%x", &value); printf ("Hex value is:%x\n", value); 整数转字符串使用sprintf int num = 0; char buf[10] = {}; num = 120270; sprintf (buf, "%x", num); //打印 bu

JAVASCRIPT 转换字符串杂记

Number()遇到null会转换为0,遇到underfind会转换为NaN. 一般整数用parseInt()方法,遇到空会转换成NaN.(注意差别)该方法可设置第二个参数 parseInt("要转换字符串",几进制).遇到小数点会停止解析,后面忽略. parseFloat()也是从第一个字符开始解析,直到末尾或者遇见一个无效的浮点数字字符(第二个小数点)为止.十六进制字符串始终被解释为0,只解析十进制,没有第二个参数. toString()方法可以直接调用不需要输入参数,在调用数值的

字符串转换为整数”123“-&amp;gt;123

字符串转换为整数"123"->123 题目描写叙述: 输入一个由数字组成的字符串.把它转换成整数并输出. 比如:输入字符串"123".输出整数123. 给定函数原型 int StrToInt(const char *str) .实现字符串转换成整数的功能.不能使用库函数atoi. 题目分析: 将字符串正确转化为整数步骤 ①当扫描第一个字符'1'时候,因为为第一位.所以直接得到数字1 ②当扫描第二个字符'2'时候,1*10+2 = 12 ③继续扫描字符'3'时候