首页 > 其他 > 详细

剑指offer 把字符串转换成整数

时间:2019-04-03 22:55:28      阅读:129      评论:0      收藏:0      [点我收藏+]

题目描述

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

输入描述:

输入一个字符串,包括数字字母符号,可以为空

输出描述:

如果是合法的数值表达则返回该数字,否则返回0
示例1

输入

+2147483647
    1a33

输出

2147483647
    0

思路:主要考虑边界条件:

a、第一个字符是否为‘+‘或者‘-‘

b、空串

c、判断是否溢出

 1 class Solution {
 2 public:
 3     int StrToInt(string str) {
 4         int len = str.length();
 5         long ans = 0; //用long或者long long吧,因为ans一开始不考虑正负,如果实际上是最小的负数,那么ans一开始计算得到的记过就会溢出
 6         bool positive = true;
 7         for (int i = 0; i < len; i++) {
 8             //只要符合就计入
 9             if (str[i] >= 0 && str[i] <= 9) {
10                 ans = ans * 10 + (str[i] - 0);
11             } else { //否则判断是否是第一个字符,并且只有第一个字符是‘+‘或者‘-‘,才符合条件
12                 if (i == 0 && (str[i] == - || str[i] == +)) {
13                     positive = true ? (str[i] == +) : (str[i] == -);
14                 } else {
15                     return 0;
16                 }
17             }
18         }
19         if (positive == false) {
20             ans *= -1;
21         }
22         return ans;
23     }
24 };

 

剑指offer 把字符串转换成整数

原文:https://www.cnblogs.com/qinduanyinghua/p/10651913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!