输出包括一行代表str。
输出一行,代表返回的值。
123
123
023
0
A13
0
2147483647
2147483647
2147483648
0
-127
-127
时间复杂度,空间复杂度
。
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int l = s.length(), t=0;
if(s[0]=='-')
t = 1;
for(int i=t;i<l;i++)
if(!isdigit(s[i])){
puts("0");
return 0;
}
if(s[t]=='0'){
puts("0");
return 0;
}
if(t==0){
if(l>10 || (l==10 && s>"2147483647")){
puts("0");
return 0;
}
}else{
if(l>11 || (l==11 && s>"-2147483648")){
puts("0");
return 0;
}
}
puts(s.c_str());
return 0;
} import java.io.*;
public class Main {
private static final int MIN_Q = Integer.MIN_VALUE / 10;
private static final int MIN_R = Integer.MIN_VALUE % 10;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(myAtoi(str));
}
private static int myAtoi(String s) {
char[] chs = s.toCharArray();
int len = chs.length;
int sign = 1;
int num = 0;
int i = 0;
if (chs[0] != '-' && (chs[0] < '0' || chs[0] > '9')) {
return 0;
}
if (chs[0] == '-' && (len == 1 || chs[1] == '0')) {
return 0;
}
if (chs[0] == '0' && len > 1) {
return 0;
}
if (chs[i] == '-') {
sign = -1;
++i;
}
while (i < len) {
int cur = '0' - chs[i];
if (cur < -9 || cur > 0) {
return 0;
}
if (num < MIN_Q || (num == MIN_Q && cur < MIN_R)) {
return 0;
}
num = num * 10 + cur;
++i;
}
if (sign == 1 && num == Integer.MIN_VALUE) {
return 0;
}
return -(sign * num);
}
} #include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
char a[1000000];
while (gets(a))
{
int i,f=1;
if(a[0]=='0'||a[0]<'-'||(a[0]>'-'&&a[0]<'0')||a[0]>'9')
{
printf("0\n");
continue;
}
for(i=1;i<strlen(a);i++)
{
if(a[i]<'0'||a[i]>'9')
{
printf("0\n");
f=0;
break;
}
}
if((strlen(a)==10&&a[0]>='2'&&a[9]>='8')||(strlen(a)>=11&&a[0]!='-')||(strlen(a)>11)||(strlen(a)==11&&a[1]>='2'&&a[10]>='9'))
{
printf("0\n");
continue;
}
if(f==1) printf("%d\n",atoi(a));
}
return 0;
} #include<iostream> #include<string> #include<algorithm> using namespace std; int main() { string s; cin >> s; if(s.find_first_not_of("-0123456789") != string::npos || s[0] == '0' || (s[0] == '-' && s[1] == '0')){ cout << 0; return 0; } if(s[0] != '-'){ if((s.length() == 10 && s > "2147483647") || (s.length() > 10)){ cout << 0; return 0; } } if(s[0] == '-'){ if((s.length() == 11 && s > "-2147483648") || (s.length() > 11)){ cout << 0; return 0; } } cout << stoi(s); return 0; }
import re
a = input()
if re.findall('\D', a) and not re.match('-', a):
print(0)
else:
try:
if eval(a) < 0:
if eval(a[1:]) > 2**31:
print(0)
else:
print(eval(a))
elif eval(a) > 2**31-1:
print(0)
else:
print(eval(a))
except:
print(0)
def solution(string,n): new_string = '' if string[0] == '-': new_string += '-' elif not string[0].isdigit() or string[0] == '0' or string[0] == '-' and string[1] == '0': return 0 else: new_string += string[0] for i in range(1,n): if not string[i].isdigit(): return 0 new_string += string[i] integer = int(new_string) if integer >= - 2**31 and integer <= 2**31 - 1: return integer else: return 0 if __name__ == '__main__': string = input() n = len(string) print(solution(string,n))