剑指Offer——把字符串转换成整数

题目描述:

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

输入描述:

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

输出描述:

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

示例1

输入

+2147483647
    1a33

输出

2147483647
    0

分析:

只可能在最开始一位出现符号,所以我们特殊判断第一位,之后都得是数字字母,不然不合法。

代码:

 1 class Solution {
 2 public:
 3     int StrToInt(string str) {
 4         int strLen = str.length();
 5         if(strLen == 0) return 0;
 6         int res = 0;
 7         if(str[0] == ‘+‘ || str[0] == ‘-‘) res = 0;
 8         else if(str[0] >= ‘0‘ && str[0] <= ‘9‘) res = str[0] - ‘0‘;
 9         for(int i = 1; i < strLen; i++) {
10             if(str[i] < ‘0‘ || str[i] > ‘9‘) return 0;
11             res *= 10;
12             res += str[i] - ‘0‘;
13         }
14         return str[0] == ‘-‘ ? -res : res;
15     }
16 };
时间: 2024-10-09 04:28:30

剑指Offer——把字符串转换成整数的相关文章

剑指offer 把字符串转化为整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0 思路:字符串转化为整数的方法num = num * 10 + str[i] - '0':特殊情况:1.输入字符串为NULL: 2.输入字符串只有+/-: 3.转化的数字大于最大值或小于

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

题目: 把字符串转换成整数 链接: https://www.nowcoder.com/practice/1277c681251b4372bdef344468e4f26e?tpId=13&tqId=11202&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0

《剑指offer》第六十三题(把字符串转换成整数)

// 面试题67:把字符串转换成整数 // 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不 // 能使用atoi或者其他类似的库函数. #include <iostream> long long StrToIntCore(const char* str, bool minus); enum Status { kValid = 0, kInvalid }; int g_nStatus = kValid;//设置全局错误变量,用来反映无效输入 int StrToIn

剑指Offer对答如流系列 - 把字符串转换成整数

面试题67:把字符串转换成整数 题目描述 请你写一个函数StrToInt,实现把字符串转换成整数这个功能.当然,不能使用库函数. 问题分析 既然不能使用库函数,那么我们就利用字符的ASCII值,将字符转换成数字,并进行累加. 问题解答 // 标识输入非法 boolean isValid = false; public int strToInt(String str) { if(str == null || str.length()<=0) { return 0; } char[] chars =

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

题目链接:把字符串转换成整数 题意:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 题解:过滤掉空格,判断正负号,然后判断每个字符是否是数字,进行转换.但是!!!!这里要考虑一个溢出 做法就是记录正负号的时候,做一个标记,在最后和pow(2,31)做比较. 代码: 1 class Solution { 2 public: 3 int StrToInt(string str){ 4 long long int ans = 0; 5 i

【剑指offer】字符串转整数

转载请注明出处:http://blog.csdn.net/ns_code/article/details/28015693 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例.对于每个测试案例,输入为一个合法或者非法的字符串,代表一个整数n(1<= n<=10000000). 输出: 对应每个测试案例,若输入为一个合法的字符串(即代表一个整数),则输出这个整数.若输入为一个非法的字符串,则输出"My God". 样

【剑指offer】字符串的排列

转载请注明出处:http://blog.csdn.net/ns_code/article/details/26390551 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个测试案例包括1行. 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母. 输出: 对应每组数据,按字典序输出所有排列. 样例输入: abc BCA 样例输出:

【剑指offer】字符串的组合

转载请注明出处:http://blog.csdn.net/ns_code/article/details/26405471 剑指offer上的拓展题目,输入一个字符串,输出该字符串的字符的所有组合,比如输入字符串:abc,输出a.b.c.ab.ac.bc.abc. 思路:与上一题类似,也可以用递归求解.可以考虑求长度为n的字符串中m个字符的组合,设为C(n,m).原问题的解即为C(n, 1), C(n, 2),...C(n, n)的总和.对于求C(n, m),从第一个字符开始扫描,每个字符有两种

剑指offer (49) 字符串转数字

class Test { public: Test() : n2(0), n1(n2 + 2) { } private: int n1; int n2; }; 调用构造函数之后,n1个n2各为多少? 分析:构造函数的初始化顺序仅仅取决于成员变量的声明顺序,所以这是 应该是 n1先初始化,然后是n2初始化 当n1初始化值 = n2值 + 2,此时n2并没有初始化,n2为内置类型并且是non-static,所以n2此时为随机值 故 n1 为随机值,n1初始完之后,n2初始化为0 最终 n1为随机值,