(C++)把字符串转换成整数

简介: (C++)把字符串转换成整数

思路

看到这个题目我们首先应该想到的就是去处理第一个字符,但是第一个字符也可能是数字字符,所以我们需要对他单独处理,如果他不符合条件,直接return,符合条件,我们就继续往下处理;接着就需要判断是否有‘+’或者‘-’字符,这会影响正负以及数字的长度,我们用flag标记正负,用length计算数字长度,有符号就--,最终我们可以得出数字长度,接着去遍历,然后每个字符减48后,乘以10length-1次方,全部相加用一个变量存储起来,返回时乘flag

画图剖析

代码

class Solution

{

public:

   int StrToInt(string str)

   {

       int size,length,flag;

       flag = 1;

       size = length = str.length();

       if(str[0] == '+' || str[0] == '-' || (str[0]<='9' && str[0] >= '0'))

       {

           if(str[0] == '+' || str[0] == '-' )

           {

               if(str[0] == '-')

               flag = -1;

               length--;

           }

       }

       else

       {

           return 0;

       }

         

       int i = 0;

       while(i < size)

       {

           if(!(str[i] == '+' || str[i] == '-' || (str[i]<='9' && str[i] >= '0')))

           return 0;

           i++;

       }

       int total = 0;

       while(length)

       {

           total += (str[size - length]-48) * pow(10,length-1);

           length--;

       }

       return total * flag;

   }

};

目录
相关文章
|
1天前
|
C++
【C++基础】C++中的字符串
【C++基础】C++中的字符串
5 0
|
1天前
|
存储 C++
C++程序中的字符串与指针
C++程序中的字符串与指针
8 2
|
1天前
|
数据处理 C++
C++程序字符串流
C++程序字符串流
10 2
|
4天前
|
C++
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
41.用c++编写程序:从键盘上任意输20个1-99之间的整数,分别统计其个位数0-9的数字各有多少
15 0
|
6天前
|
存储 C++
C/C++中的整数除法运算与汇编指令DIV和IDIV
C/C++中的整数除法运算与汇编指令DIV和IDIV
18 1
|
6天前
|
存储 安全 程序员
C/C++中的整数乘法运算与汇编指令MUL和IMUL
C/C++中的整数乘法运算与汇编指令MUL和IMUL
12 0
|
6天前
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
|
6天前
|
存储 编译器 C语言
C++字符串大小写之for语句
C++字符串大小写之for语句
20 0
|
6天前
|
C++
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
15 0
|
6天前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”