输出包括一行代表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))