剑指offer系列39:把字符串转换成整数

主要代码其实很少,主要是对各种情况的判断。在做题的时候一定要考虑到各种情况的非法输入。

1.前面的空格需要跳过

2.判断数字的正负号并记录

3.如果有非法输入例如字母和其他非数字和正负号的字符,退出返回0

4.返回的是一个数字,所以一定要考虑数字的边界问题

5.对于各种情况考虑到之后最好再加一个无条件的输出语句,防止没有考虑到的情况发生

 1 class Solution {
 2 public:
 3     int StrToInt(string str) {
 4         if (str.empty())
 5             return 0;
 6         auto t = str.begin();
 7         while (*t == ‘ ‘&&t!=str.end()-1)//排除前面的空格
 8         {
 9             t++;
10         }
11         bool neg = false;//符号判断位,默认为正数
12         if (*t == ‘+‘)
13         {
14             t++;
15         }
16         else
17         {
18             if (*t == ‘-‘)
19             {
20                 t++;
21                 neg = true;
22             }
23
24         }
25         long long int val = 0;
26         for (; t != str.end(); t++)
27         {
28             if (*t >= ‘0‘&&*t <= ‘9‘)//这里是将字符串转换为数字的基础操作,记住
29             {
30                 val *= 10;
31                 val += *t-‘0‘;
32                 if ((neg&&val < INT_MIN) || (!neg&&val > INT_MAX))//判断数字是否越界
33                 {
34                     return 0;
35                 }
36             }
37             else
38             {
39                 return 0;
40             }
41         }
42         if (t != str.end())
43             return 0;
44         if (neg)
45             return -val;
46         else
47             return val;
48     }
49 };

原文地址:https://www.cnblogs.com/neverland0718/p/11237029.html

时间: 2024-11-04 10:16:36

剑指offer系列39:把字符串转换成整数的相关文章

剑指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 49.综合 把字符串转换成整数

题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0. 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0 解题思路 (1先用一个Map<String, Integer>将0-9的数字封装

170319 剑指offer 1.把一个字符串转化成整数(简单问题的全面性考虑)

工作的时间越长,越感觉基础的重要性,当我们对程序的框架结构越来越熟悉的时候,越会注意这一点,在工作当中,功能的实现是重要的,但是代码的健壮性,重用性,与扩展性确往往更为重要,在学习新技术的同时,我们或许应该抽出一点时间,去思考代码可能出现的问题. 关于剑指offer的这本书,可能所有刚毕业找工作的人,或者准备找工作的人都曾经看过,但是当时我们面对一些东西的时候心情过于浮躁,往往忽视了简单的却又十分重要的环节,(ps:也可能只有我是这样) 面试中一道简单的问题(把一个字符串转化成整数) 可能接触c

剑指offer系列53---字符串转化成整数

[题目]将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数 * []整数(32位)最大值:0X7fff ffff( 0111 1111 1111 1111 1111 1111 1111 1111 (0代表正号)) * 最小值:0x8000 0000( 1000 0000 0000 0000 0000 0000 0000 0000 (1代表负号)) 1 package com.exe10.offer; 2 3 /** 4 * [题目]将一个字符串转换成一个整数,要求不能使用字符串转换整

剑指offer系列源码-字符串的排列

题目1369:字符串的排列 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2432解决:609 题目描述: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入: 每个测试案例包括1行. 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母. 输出: 对应每组数据,按字典序输出所有排列. 样例输入: abc BCA 样例输出: abc acb ba

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

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

《剑指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】把字符串转换成整数

题目链接:把字符串转换成整数 题意:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为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/27366485 题目描述: 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S="abcXYZdef",要求输出循环左移3位后的结果,即"XYZdefabc".是不是很简单?OK,搞定它! 输入: 多组测试数据,每个测试数据包含一个