2025年10月10日 星期五

[8] String to Integer (atoi)

Corner case 真多again ~ 不過我竟然可以寫完它了
也是令人感動。(看那個題號,以前的我應該是寫的亂七八糟所以一直沒寫吧哈哈哈哈哈)
腎感欣慰。希望其它五臟六腑也是。(冷)
 
bool isDigit(char a)
{
if (a-'0' >= 0 && a-'0' < 10 )
return true;
return false;
}

int myAtoi(char * s){
int len =strlen(s);
bool sign = true;
bool begin = false;
long long num = 0;
for (int i=0; i<len;i++)
{
if (begin && !isDigit(s[i]))
break;
if (!begin && s[i]==' ')
continue;
if (!begin && isDigit(s[i]))
begin = true;
if (!begin && s[i]=='-')
{
sign = false;
begin = true;
continue;
}
if (!begin && s[i]=='+')
{
begin = true;
continue;
}
if (!begin)
return 0;
if (begin)
{
if (!isDigit(s[i]))
return num;
if (i>9 && !sign)
{
if (num*10 + s[i]-'0' > INT_MAX)
return INT_MIN;
}
num = num*10 + s[i]-'0';
if (sign && num > INT_MAX)
return INT_MAX;
if (!sign && num < INT_MIN)
return INT_MIN;
}
}
//output num
return (sign)?num: (-1*num);
}

沒有留言:

張貼留言