atoi&itoa

时间:2023-03-10 05:54:31
atoi&itoa
char* itoa(int num,char*str,int radix)
{/*索引表*/
char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
unsigned unum;/*中间变量*/
int i=,j,k;
/*确定unum的值*/
if(radix==&&num<)/*十进制负数*/
{
unum=(unsigned)-num;
str[i++]='-';
}
else unum=(unsigned)num;/*其他情况*/
/*转换*/
do{
str[i++]=index[unum%(unsigned)radix];
unum/=radix;
}while(unum);
str[i]='\0';
/*逆序*/
if(str[]=='-')
k=;/*十进制负数*/
else
k=;
char temp;
for(j=k;j<=(i-)/;j++)
{
temp=str[j];
str[j]=str[i-+k-j];
str[i-+k-j]=temp;
}
return str;
}
class Solution {
public: bool isdigit(char c){
if (c >= && c <= )
return true;
else
return false;
}
int atoi(string str){
long long ans = ,res=;
bool flag = false;
char c;
for(int i=;i < str.size() ;i++){
c = str[i];
if(!flag && (c==' ' || c=='\t' || c=='\r' || c=='\n') ) continue;
if(!flag && (c=='+' || c=='-') ){
if(c=='-') res = -;
flag = true;
continue;
}
if(!flag && isdigit(c)){
flag = true;
}
if(!isdigit(c)) break;
ans = ans * + (c-'');
//cout<<ans<<' '<<c<<endl;
if(ans > INT_MAX ){
break;
}
}
ans *= res;
if(ans > INT_MAX) ans = INT_MAX;
else if (ans < INT_MIN ) ans = INT_MIN;
return (int)ans;
}
};