LintCode-54.转换字符串到整数
转换字符串到整数
实现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.转换字符串到整数的更多相关文章
- 【LintCode】转换字符串到整数
问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...
- [LintCode]转换字符串到整数
问题描述: 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-21 ...
- Java中将0x开头的十六进制字符串转换成十进制整数
1.Integer.toString(int i) 由于input(输入数据)是以0x开头的字符串,并不是整型.因而在用 String s = Integer.toString(input); 时用会 ...
- 编程练习------C/C++分别实现字符串与整数的转换
C/C++分别实现字符串与整数的转换 前提:不使用 itoa 和 atoi. 方法一.C和C++通用的一种转换手段是: 1.整数转化为字符串:采用加'0',再逆序的办法,整数加'0'就会隐性转化成ch ...
- [PHP] 算法-将一个字符串转换成一个整数的PHP实现
题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一 ...
- python 字符串和整数,浮点型互相转换
在编程当中,经常要用到字符串的互相转换, 现在记录 python 里面的字符串和整数是怎么转换的. int(str) 函数将 符合整数的规范的字符串 转换成 int 型. num2 = "1 ...
- Leetcode8--->String to Integer(实现字符串到整数的转换)
题目: 实现字符串到整数的转换 解题思路: 下面给出这道题应该注意的一些细节: 1. 字符串“ 123 ” = 123: 2. 字符串“+123” = 123: 3. 字符串“-12 ...
- Leetcode题库——8.字符串转为整数【##】
@author: ZZQ @software: PyCharm @file: myAtoi.py @time: 2018/9/20 20:54 要求:实现 atoi,将字符串转为整数. 1)根据需要丢 ...
- SQL Server日期时间格式转换字符串详解 (详询请加qq:2085920154)
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日 ...
随机推荐
- OpenCV-Python 视频读取
import numpy as np import cv2 # 读取视频文件 cap = cv2.VideoCapture('./law.mp4') # 或者电影每秒的帧数 fps = cap.get ...
- 【转载】 旧版本Microsoft Office正在配置解决方法
原文:https://blog.csdn.net/sinat_37215184/article/details/81053931 在运行Microsoft Office 2010等旧版本的Office ...
- Spring异常重试框架Spring Retry
Spring Retry支持集成到Spring或者Spring Boot项目中,而它支持AOP的切面注入写法,所以在引入时必须引入aspectjweaver.jar包. 快速集成的代码样例: @Con ...
- ArrayList的源码分析(基于jdk1.8)
1.初始化 transient Object[] elementData; //实际存储元素的数组 private static final Object[] DEFAULTCAPACITY_EMPT ...
- Java学习笔记十五:Java中的成员变量和局部变量
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...
- 函数调用方法之__cdecl与_stdcall
在debug VS c工程文件时,碰到cannot convert from 'int (__cdecl *)(char *)' to 'xxx'这个问题,发现问题在于typedef函数指针类型时,将 ...
- [原创]用python实现系统状态监测和故障转移
#coding: utf-8 import socket import select import time import os import threading def ser(): s = soc ...
- 「专题训练」k-Tree(CodeForces Round #247 Div.2 C)
题意与分析(Codeforces-431C) 题意是这样的:给出K-Tree--一个无限增长的树,它的每个结点都恰有\(K\)个孩子,每个节点到它\(K\)个孩子的\(K\)条边的权重各为\(1,2, ...
- 「知识学习」二分图的最大匹配、完美匹配和匈牙利算法(HDU-2063)
定义 如果一个图\((E,V)\)的顶点集\(E\)能够被能够被分成两个不相交的集合\(X,Y\),且每一条边都恰连接\(X,Y\)中的各一个顶点,那么这个图就是一个二分图. 容易得知,它就是不含有奇 ...
- vim python自动补全插件:pydiction
vim python自动补全插件:pydiction 可以实现下面python代码的自动补全: 1.简单python关键词补全 2.python 函数补全带括号 3.python 模块补全 4.pyt ...