
1 int max_value=2147483647; 2 int min_value=-2147483648; 3 class Solution { 4 public: 5 int myAtoi(string str) { 6 long long int ans=0; 7 int len=str.size(),i=0; 8 int sign=1; 9 while(str[i]==' ')i++; 10 if(str[i]=='-'||str[i]=='+') 11 { 12 if(str[i]=='-') 13 sign=-1; 14 i++; 15 } 16 for(;i<len;i++) 17 { 18 if(!isdigit(str[i])) 19 { 20 break; 21 } 22 ans=ans*10+(str[i]-'0')*sign; 23 if(ans>max_value) 24 ans=max_value; 25 if(ans<min_value) 26 ans=min_value; 27 } 28 return ans; 29 } 30 };
1、首先去掉前导空格
2、处理+ —操作符,Then, starting from this character, takes an optional initial plus or minus sign followed by as many numerical digits as possible题意貌似每个字符串都有一个操作符,但是测试用例好像并不是这样
3、遇到非数字字符结束循环
4.输入问题,c++中的cin>>string x 的方式相当于C中的scanf输入法,并不会输入空格,若想要c 中的gets(char x[]) 的效果,可以用getline(cin,x)
#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}
getline(cin,str)可以接受空格并输出