关于string转整数

又是leetcode的easy级别题,很基本的题目,却漏考虑很多情况,动手前一定要考虑清楚呀!!!

就当做锻炼写作能力吧,先上题目!

将文本转换成整数,注意一下几点:

1.文本里面第一个不为空白的字符应该为数字或‘+’、‘-’,否则返回0;

2.文本中数字后面的文本不影响结果;

3.转换后的值若超过了int的最值应返回最值。

上代码吧!

class Solution {
public:
	int myAtoi(string str) {
		int start = 0;
		for (int i = 0; i!= str.length(); i++)
		{
			if (str[i] == ‘ ‘)
				start++;
			else
				break;
		}
		if(start>=str.length())
		    return 0;

		int p = 0,t=0;
		if (str[start] == ‘-‘)
		{
			start++;
			p = 1;
		}
		else if (str[start] == ‘+‘)
			start++;
		for (; start <str.length(); start++)
		{

			char m = str[start] - ‘0‘;
			if (m >= 0 && m <= 9)
			{
			    if(t>INT_MAX/10)
			        if(p==0)
			            return INT_MAX;
			        else
			            return INT_MIN;
		    	t *= 10;
			        if(p==0&&t>INT_MAX-m)
			            return INT_MAX;
			        else if(p!=0&&-t<(INT_MIN+m))
			            return INT_MIN;
				t += m;
			}
			else
				break;
		}
		return p==0?t:-t;
	}
};
时间: 2024-08-07 04:11:59

关于string转整数的相关文章

string和整数转换

tostring(int) fromstring(string ) c++11新方式 stod Convert string to double (function template ) stold Convert string to long double (function template ) stoi Convert string to integer (function template ) strtof Convert string to float (function )

C++ string 转整数

使用 sstream 完成转换, 1 #include <iostream> 2 #include <string> 3 #include <sstream> 4 #include <stdint.h> 5 6 int main () 7 { 8 std::string str_integer; 9 uint64_t integer; 10 11 std::getline(std::cin, str_integer); 12 std::stringstrea

字符char、字符串string、整数int之间的转换

#include <iostream> #include <string> #include <sstream> using namespace std ; void i2s(int x, string &basic_string) { stringstream ss; ss << x; ss >> basic_string; } void s2i(string &basic_string , int &x ) { str

大整数四则运算

============ 日后再写!先将设计思想留下 ============= 定义并实现超长整数类double long,要求如下: 64位数据长度,有符号 支持+.-.*./运算 支持+=.-=./=运算 支持cin>>和cout<<操作 首先,我们的运算对象是大整数并且要支持cout<<和cin>>操作,数组和链表是可选择项.在这里我们用数组.数组有int型和char型,选哪个好呢?只能选char型,因为我们的大整数是有符号位的,必须用一个char字

【算法设计与分析基础】大整数乘法

#include<iostream> #include<string> #include<time.h> #include<stdlib.h> #include<sstream> using namespace std; class BigDecimal{ private: int max(int a,int b){//获取两数中的最大值 return a^((a^b) & -(a<b)); } public: string n;

c++实现atoi()和itoa()函数(字符串和整数转化)

  c++实现atoi()和itoa()函数(字符串和整数转化) 一:起因 (1)字符串类型转化为整数型(Integer),还是字符串类型(String)转化为Double类型,这在java里面有非常好的内部函数,很easy的事情: (2)但是在c里面没有Integer Double等包装类,由char[]数组转化为整数型就变得不那么简单了,atoi()  itoa()在widows下面有,但是网上说linux 下好像没有 itoa() 函数,用 sprintf() 好了,但是本人测试了一下sp

大整数的加减乘除C++实现

大整数的乘法由于用分治法理解起来有点困难,就采用人的计算方法实现,大整数为string 类型,结果也为string类型. 大整数的除法采用先乘后减的方法,例如: 665/20 首先20*10=200:然后665去减200,通过循环计入减了3次,则结果记入3*10=30:然后20*1=20,上次减了之后还剩65,65-20,又减了3次,所以结果记入30+3*1=33:最后还剩5,比20小,则余数为5. 大整数的加法减法和人工打草稿过程类似,不做详细分析.实现代码仅供参考: 1 #include<i

用itoa()函数将整数转换为字符串

在C语言中提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子:atoi     把字符串转换成整型数itoa     把一整数转换为字符串 下面分享一下应用范例,可学习0基础C语言开发教程: #include "stdio.h" #include "ctype.h" #include "stdlib.h" /* Converts a character strin

tchar 输入输出类 和 string 类 函数简单说明 总结各种前缀后缀

标准输入输出printf类_tprintf : 类同printf_tprintf_l : 类同printf, 但是"_l"表示第二个参数是一个locale.locale是操作系统对语言设定的参数, 这个会影响ANSI字符的语言识别, 在Unicode下应该是无差别的_tprintf_s : 类图printf, 但是和_tprintf相比, _tprintf_s多会做一些检查工作.如果你的"format string"是动态的, 这个能帮助你._tprintf_s_l