转换字符串到整数

实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。

样例

"10" =>10

"-1" => -1

"123123123123123" => 2147483647

"1.0" => 1

标签

字符串处理 基本实现 优步

code

class Solution {
public:
/**
* @param str: A string
* @return An integer
*/
int atoi(string str) {
// write your code here
str = eraseSpace(str);
int size=str.size(); if(size <= 0)
return 0; if(str[0]<='9' && str[0]>='0') {
int num=str[0]-'0', i, dec=str[0]-'0';
for(i=1; i<size; i++) {
if(str[i]<='9' && str[i]>='0') {
dec = num;
num = num * 10;
if(isCrossBorder(num, dec))
return 2147483647; dec = num;
num += str[i]-'0';
if(isCrossBorder(num, dec))
return 2147483647;
}
else {
return num;
}
}
return num;
}
else if(str[0] == '+') {
int num=0, i, dec=0;
for(i=1; i<size; i++) {
if(str[i]<='9' && str[i]>='0') {
dec = num;
num = num * 10;
if(isCrossBorder(num, dec))
return 2147483647; dec = num;
num += str[i]-'0';
if(isCrossBorder(num, dec))
return 2147483647;
}
else {
return num;
}
}
return num;
}
else if(str[0] == '-') {
int num=0, i, dec=0;
for(i=1; i<size; i++) {
if(str[i]<='9' && str[i]>='0') {
dec = num;
num = num * 10;
if(isCrossBorder(num, dec))
return -2147483648; dec = num;
num += str[i]-'0';
if(isCrossBorder(num, dec))
return -2147483648;
}
else {
return num*-1;
}
}
return num*-1;
}
else {
return 0;
}
} bool isCrossBorder(int num1, int num2) {
if(num1 < num2)
return true;
return false;
} string eraseSpace(string str) {
int size=str.size(),i=0,mark=0;
string result; for(i=0; i<size; i++) {
if(str[i]==' ' && mark==0) {
continue;
}
else if(str[i]!=' ' && mark==0) {
mark = 1;
result += str[i];
}
else if(str[i]!=' ' && mark==1) {
mark = 1;
result += str[i];
}
else if(str[i]==' ' && mark==1) {
break;
}
}
return result;
}
};

LintCode-54.转换字符串到整数的更多相关文章

  1. 【LintCode】转换字符串到整数

    问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...

  2. [LintCode]转换字符串到整数

    问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...

  3. Java中将0x开头的十六进制字符串转换成十进制整数

    1.Integer.toString(int i) 由于input(输入数据)是以0x开头的字符串,并不是整型.因而在用 String s = Integer.toString(input); 时用会 ...

  4. 编程练习------C/C++分别实现字符串与整数的转换

    C/C++分别实现字符串与整数的转换 前提:不使用 itoa 和 atoi. 方法一.C和C++通用的一种转换手段是: 1.整数转化为字符串:采用加'0',再逆序的办法,整数加'0'就会隐性转化成ch ...

  5. [PHP] 算法-将一个字符串转换成一个整数的PHP实现

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

  6. python 字符串和整数,浮点型互相转换

    在编程当中,经常要用到字符串的互相转换, 现在记录 python 里面的字符串和整数是怎么转换的. int(str) 函数将 符合整数的规范的字符串 转换成 int 型. num2 = "1 ...

  7. Leetcode8--->String to Integer(实现字符串到整数的转换)

    题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“    123   ” = 123: 2.   字符串“+123” = 123: 3.   字符串“-12 ...

  8. Leetcode题库——8.字符串转为整数【##】

    @author: ZZQ @software: PyCharm @file: myAtoi.py @time: 2018/9/20 20:54 要求:实现 atoi,将字符串转为整数. 1)根据需要丢 ...

  9. SQL Server日期时间格式转换字符串详解 (详询请加qq:2085920154)

    在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...

随机推荐

  1. Apache Flume简介及安装部署

    概述 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的软件. Flume 的核心是把数据从数据源(source)收集过来,再将收集到的数据送到指定的目 ...

  2. for循环删除列表中元素遇到的漏删的问题(python)

    问题描述:python中通过for循环来删除列表中的两个相邻的元素,存在漏删的问题 比如说下面的例子,准备删掉2和3,但是结果是2删掉了,3没删掉 是因为把2删掉后3的下标就变成了1,但是原本下标为1 ...

  3. vuejs中使用v-model对表单数据的收集

    表单收集的信息针对有text/textarea,checkbox,radio,select 举个例子: <!DOCTYPE html> <html lang="en&quo ...

  4. Multiclonal Invasion in Breast Tumors Identified by Topographic Single Cell Sequencing

    Title:  Multiclonal Invasion in Breast Tumors Identified by Topographic Single Cell Sequencing 课题的目的 ...

  5. F. Make It Connected

    题目链接:http://codeforces.com/contest/1095/problem/F 题意:给你n个点,每个点有个权值,如果在两点之间添一条边,代价为两点权值之和.现在给出m个边可以选择 ...

  6. Python入门 (三)

    迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器 ...

  7. java常见类

  8. MVC保存二进制到数据库,并显示文件的方法(图片显示)

    通过两篇文章解决了数据库存储图片并显示到View的方法: http://blog.sina.com.cn/s/blog_6da396a50101639u.htmlhttp://www.cnblogs. ...

  9. 全国Uber优步司机奖励政策 (1月18日-1月24日)

    本周已经公开奖励整的城市有:北 京.成 都.重 庆.上 海.深 圳.长 沙.佛 山.广 州.苏 州.杭 州.南 京.宁 波.青 岛.天 津.西 安.武 汉.厦 门,可按CTRL+F,搜城市名快速查找. ...

  10. 北京Uber优步司机奖励政策(12月16日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...