#include <stdio.h>
#include <stdlib.h>
#define INT_MAX 2147483647
#define INT_MIN -2147483648
void int2str(int i, char *s) {
}
char* extractStr(char* str, char buf[]){
char* ptr;
ptr = str;
int tmp = 0;
int idx = 0;
int negativeIdx = -1;
int isBufHasVaildNum = 0;
while(*ptr != '\0'){
tmp = (int)(*ptr);
if(tmp >= 48 && tmp <= 57){
if(tmp != 48){
buf[idx] = *ptr;
isBufHasVaildNum = 1;
idx++;
}else{
if(isBufHasVaildNum){
buf[idx] = *ptr;
idx++;
}
}
}else if(tmp == 45){
buf[idx] = *ptr;
negativeIdx = idx;
idx++;
}else{
if(tmp != 32 && tmp != 43)
break;
}
ptr++;
}
if(negativeIdx != -1 && buf[0] != '-'){
int i = 0;
for(i = negativeIdx; buf[i] != '\0' ;i++){
buf[i] = '\0';
}
}
buf[0] = '\0';
}
return buf;
}
int myAtoi(char * str){
char buf_1[64];
char buf_2[64];
int isPostiveBefore = 1;
int isPostiveAfter = 1;
long result;
str = extractStr(str, buf_1);
if(*str == '\0')
return 0;
if(*str == '-'){
isPostiveBefore = 0;
}
memset(buf_2
,'\0',sizeof(buf_2
)); int2str(result, buf_2);
if(buf_2[0] == '-'){
isPostiveAfter = 0;
}
if(isPostiveBefore == 1 && isPostiveAfter == 0){
result = INT_MAX;
}
if(isPostiveBefore == 1 && isPostiveAfter == 1){
result = INT_MAX;
}
}
if(isPostiveBefore == 0 && isPostiveAfter == 1){
result = INT_MIN;
}
if(isPostiveBefore == 0 && isPostiveAfter == 0){
result = INT_MIN;
}
}
return result;
}
int main(void) {
// your code goes here
int i = 0;
i = myAtoi(" 0000000000012345678");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KIAojZGVmaW5lIElOVF9NQVggMjE0NzQ4MzY0NwojZGVmaW5lIElOVF9NSU4gLTIxNDc0ODM2NDgKIAogCnZvaWQgaW50MnN0cihpbnQgaSwgY2hhciAqcykgewogIHNwcmludGYocywiJWQiLGkpOwp9CiAKY2hhciogZXh0cmFjdFN0cihjaGFyKiBzdHIsIGNoYXIgYnVmW10pewogICAgY2hhciogcHRyOwogICAgcHRyID0gc3RyOwogICAgaW50IHRtcCA9IDA7CiAgICBpbnQgaWR4ID0gMDsKICAgIGludCBuZWdhdGl2ZUlkeCA9IC0xOwogICAgaW50IGlzQnVmSGFzVmFpbGROdW0gPSAwOwogCiAgICBtZW1zZXQoYnVmLCdcMCcsc2l6ZW9mKGJ1ZikpOwogICAgd2hpbGUoKnB0ciAhPSAnXDAnKXsKICAgICAgICB0bXAgPSAoaW50KSgqcHRyKTsKICAgICAgICBpZih0bXAgPj0gNDggJiYgdG1wIDw9IDU3KXsKICAgICAgICAgICAgaWYodG1wICE9IDQ4KXsKICAgICAgICAgICAgICAgIGJ1ZltpZHhdID0gKnB0cjsKICAgICAgICAgICAgICAgIGlzQnVmSGFzVmFpbGROdW0gPSAxOwogICAgICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgaWYoaXNCdWZIYXNWYWlsZE51bSl7CiAgICAgICAgICAgICAgICAgICAgYnVmW2lkeF0gPSAqcHRyOwogICAgICAgICAgICAgICAgICAgIGlkeCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfWVsc2UgaWYodG1wID09IDQ1KXsKICAgICAgICAgICAgYnVmW2lkeF0gPSAqcHRyOwogICAgICAgICAgICBuZWdhdGl2ZUlkeCA9IGlkeDsKICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGlmKHRtcCAhPSAzMiAmJiB0bXAgIT0gNDMpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcHRyKys7CiAgICB9CiAKICAgIGlmKG5lZ2F0aXZlSWR4ICE9IC0xICYmIGJ1ZlswXSAhPSAnLScpewogICAgICAgIGludCBpID0gMDsKICAgICAgICBmb3IoaSA9IG5lZ2F0aXZlSWR4OyBidWZbaV0gIT0gJ1wwJyA7aSsrKXsKICAgICAgICAgICAgYnVmW2ldID0gJ1wwJzsKICAgICAgICB9CiAgICB9CiAKICAgIGlmKHN0cmNtcChidWYsIi0iKSA9PSAwKXsKICAgICAgICBidWZbMF0gPSAnXDAnOwogICAgfQogCiAgICByZXR1cm4gYnVmOwp9CiAKaW50IG15QXRvaShjaGFyICogc3RyKXsKIAogICAgY2hhciBidWZfMVs2NF07CiAgICBjaGFyIGJ1Zl8yWzY0XTsKICAgIGludCBpc1Bvc3RpdmVCZWZvcmUgPSAxOwogICAgaW50IGlzUG9zdGl2ZUFmdGVyID0gMTsKICAgIGxvbmcgcmVzdWx0OwogCiAgICBzdHIgPSBleHRyYWN0U3RyKHN0ciwgYnVmXzEpOwogICAgaWYoKnN0ciA9PSAnXDAnKQogICAgICAgIHJldHVybiAwOwogCiAgICBpZigqc3RyID09ICctJyl7CiAgICAgICAgaXNQb3N0aXZlQmVmb3JlID0gMDsKICAgIH0KIAogICAgcmVzdWx0ID0gc3RydG9sKHN0ciwwLDEwKTsKICAgIG1lbXNldChidWZfMiwnXDAnLHNpemVvZihidWZfMikpOwogICAgaW50MnN0cihyZXN1bHQsIGJ1Zl8yKTsKIAogICAgcHJpbnRmKCIlc1xuIixzdHIpOwogICAgcHJpbnRmKCIlc1xuIixidWZfMik7CiAKICAgIGlmKGJ1Zl8yWzBdID09ICctJyl7CiAgICAgICAgaXNQb3N0aXZlQWZ0ZXIgPSAwOwogICAgfQogCiAgICBpZihpc1Bvc3RpdmVCZWZvcmUgPT0gMSAmJiBpc1Bvc3RpdmVBZnRlciA9PSAwKXsKICAgICAgICByZXN1bHQgPSBJTlRfTUFYOwogICAgfQogCiAgICBpZihpc1Bvc3RpdmVCZWZvcmUgPT0gMSAmJiBpc1Bvc3RpdmVBZnRlciA9PSAxKXsKICAgICAgICBpZihzdHJjbXAoYnVmXzIsIHN0cikgIT0gMCl7CiAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NQVg7CiAgICAgICAgfQogICAgfQogCiAgICBpZihpc1Bvc3RpdmVCZWZvcmUgPT0gMCAmJiBpc1Bvc3RpdmVBZnRlciA9PSAxKXsKICAgICAgICByZXN1bHQgPSBJTlRfTUlOOwogICAgfQogCiAgICBpZihpc1Bvc3RpdmVCZWZvcmUgPT0gMCAmJiBpc1Bvc3RpdmVBZnRlciA9PSAwKXsKICAgICAgICBpZihzdHJjbXAoYnVmXzIsIHN0cikgIT0gMCl7CiAgICAgICAgICAgIHJlc3VsdCA9IElOVF9NSU47CiAgICAgICAgfQogICAgfQogCiAgICByZXR1cm4gcmVzdWx0Owp9CiAKIAogCmludCBtYWluKHZvaWQpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBpID0gMDsKCWkgPSBteUF0b2koIiAgMDAwMDAwMDAwMDAxMjM0NTY3OCIpOwoJcHJpbnRmKCIlZCIsaSk7CiAKCXJldHVybiAwOwp9Cgo=