题目说明:

输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。

程序代码:

#include <gtest/gtest.h>
using namespace std;int StrToInt(const char* szValue, int nBase = 0, bool* bValid = NULL)
{    long long nValue = 0;int nSign = 1;if (bValid){*bValid = false;}if (!szValue){return 0;}if (nBase < 0 || nBase == 1 || nBase > 36){return 0;}char cData = *szValue++;while(cData <= ' ')            // skip whitespace
    {cData = *szValue++;}if (cData == '+'){cData = *szValue++;}else if(cData == '-'){cData = *szValue++;nSign = -1;}if (nBase==0){if (cData != '0')nBase = 10;else if (*szValue == 'x' || *szValue == 'X')nBase = 16;elsenBase = 8;}if (nBase == 16){if (cData == '0' && (*szValue == 'x' || *szValue == 'X')){szValue++;cData = *szValue++;}}while (cData != '\0'){int nData = 0;if (cData >= '0' && cData <= '9'){            nData = cData-'0';}else if (cData >= 'A' && cData <= 'Z'){nData = cData - 'A' + 10;}else if(cData >= 'a' && cData <= 'z'){nData = cData - 'a' + 10;}else{break;}if (nData >= nBase) // bad digit
        {break;}nValue = (nBase * nValue) + nData;        if (nValue > std::numeric_limits<int>::max()){nValue = 0;break;}cData = *szValue++;}if (bValid){*bValid = (cData == '\0');}return (int)(nSign * nValue);
}TEST(Pratices, tStrToInt)
{    // NULL -> 0// ""  -> 0    // "0" -> 0// "+123" -> 123// "-123" -> -123// "123" -> 123
    ASSERT_EQ(StrToInt(NULL), 0);ASSERT_EQ(StrToInt(""), 0);ASSERT_EQ(StrToInt("0"), 0);ASSERT_EQ(StrToInt("+123"), 123);ASSERT_EQ(StrToInt("-123"), -123);ASSERT_EQ(StrToInt("123"), 123);// 16进制// 0x10 -> 16// 0x0 -> 0// 0x123 -> 291ASSERT_EQ(StrToInt("0x10"), 16);ASSERT_EQ(StrToInt("0x10",16), 16);ASSERT_EQ(StrToInt("0x0",16), 0);ASSERT_EQ(StrToInt("-0x123"), -291);// 8进制// 010 -> 8    // 0123 -> 83ASSERT_EQ(StrToInt("010"), 8);ASSERT_EQ(StrToInt("0123",8), 83);}

转载于:https://www.cnblogs.com/Quincy/p/4870814.html

[算法练习] 把字符串转换成整数相关推荐

  1. 算法笔记_028:字符串转换成整数(Java)

    1 问题描述 输入一个由数字组成的字符串,请把它转换成整数并输出.例如,输入字符串"123",输出整数123. 请写出一个函数实现该功能,不能使用库函数. 2 解决方案 解答本问题 ...

  2. 程序员面试题精选100题(17)-把字符串转换成整数[算法]

    题目:输入一个表示整数的字符串,把该字符串转换成整数并输出.例如输入字符串"345",则输出整数345. 分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程 ...

  3. 【算法】剑指 Offer 67. 把字符串转换成整数

    1.概述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当 ...

  4. oracle 转化为整数,字符串转换成整数——从源码学习

    字符串转换成整数:输入一个表示整数的字符串,把该字符串转换成整数并输出,例如输入字符串"345",则输出整数345. 在笔试面试中,atoi 即「字符串转换成整数」是一个经典问题了 ...

  5. 在要求输入数字处找到非数字字符_剑指 Offer 67. 把字符串转换成整数 leetcode 剑指offer系列...

    点击专辑上方"蓝字"关注我吧 题目难度: 中等 原题链接[1] 今天继续更新剑指 offer 系列, 老样子晚上 6 点 45 分准时更新公众号 每日精选算法题, 大家记得关注哦~ ...

  6. 面试题67. 把字符串转换成整数

    题目 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们 ...

  7. 程序员编程艺术第三十 三十一章 字符串转换成整数,通配符字符串匹配

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 第三十~ ...

  8. 字符串转换成整数,带通配符的字符串匹配

    之前本一直想写写神经网络算法和EM算法,但写这两个算法实在需要大段大段的时间,而平时上班,周末则跑去北大教室自习看书(顺便以时间为序,说下过去半年看过的自觉还不错的数学史方面的书:<数理统计学简 ...

  9. 将数字字符串转换成整数

    问题 将数字字符串转换成整数 算法分析 算法步骤如下: 算法实现 #include <stdio.h> int atoi(char s[ ]); main() {char s[20];sc ...

  10. 把字符串转换成整数(atoi)

    题目 描述 写一个函数 StrToInt,实现把字符串转换成整数这个功能.不能使用 atoi 或者其他类似的库函数.传入的字符串可能有以下部分组成: 1.若干空格 2.(可选)一个符号字符('+' 或 ...

最新文章

  1. Error creating bean with name 'defaultHandlerMapping' defined in ServletContext resource
  2. 4·24 dene2004's cnBlog 启 SP1
  3. java加密解密代码_base64位加密解密原理及js代码实现
  4. 开源重量级的流程引擎或UI引擎
  5. JAVA泛型只能用引用类型_Java泛型和设计模式:不参数化对泛型类型的引用总是一件坏事吗?...
  6. 【网络安全工程师面试合集】—黑客常用的端口及攻击方法汇总
  7. [C#][Quartz]帮助类
  8. Prettier 代码格式化工具使用详解
  9. PandoraBox潘多拉无线桥接(中继)使用方法和无法使用解决----小米mini小米3路由
  10. 指数解读:恒生指数(Hang Seng Indexes)
  11. 12092009小记
  12. python计算均值方差模型_如何从Python中的FIGARCH模型中得到条件均值和标准差?...
  13. Dao,Service,Controller层作用
  14. 【JavaSE基础】00-计算机基础及环境搭建
  15. 【2023 · CANN训练营第一季】昇腾AI入门课(PyTorch)第一章学习笔记——Hi Ascend
  16. 51单片机控制DHT11温湿度传感器,并使用OLED屏幕显示
  17. opencv21:Histograms直方图-查找、绘制和分析
  18. 【若泽大数据实战第七天】MySQL在DBeaver上的使用
  19. 【自然语言处理】【大模型】Chinchilla:训练计算利用率最优的大语言模型
  20. Python 酷q,踩坑粗记,用慕晓飞大神的sdk

热门文章

  1. iOS 浅复制和深复制的深层理解,含示例
  2. 《GO并发编程实战》—— 临时对象池
  3. KMP + 求最小循环节 --- HDU 1358 Period
  4. Collections.sort new Compartor 用法
  5. [转载]返璞归真 asp.net mvc (10) - asp.net mvc 4.0 新特性之 Web API
  6. python如何删除对象属性_如何销毁python中属性中的对象?
  7. 拉取远程分支到本地分支_想买的保险本地没有分支机构怎么办?异地投保理赔难吗?...
  8. linux 档案类型s,深入了解Linuxs归档和压缩命令 | MOS86
  9. 使用apktool来解包和重新打包
  10. ER图设计数据库 练习题