init commit

This commit is contained in:
2024-03-19 01:05:51 +08:00
commit 199bbf2628
393 changed files with 34883 additions and 0 deletions

View File

@ -0,0 +1,108 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
/**
* https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/5/strings/37/
* 字符串转整数atoi
*/
#define INT_MIN -2147483648
#define INT_MAX 0x7fffffff
int myAtoi(char *str)
{
long long ret = 0;
char flag = 1, len = 0;
while (*str == ' ') //删除空
{
str++;
}
if (*str == '-')
{
flag = -1;
str++;
}
else if (*str == '+')
{
str++;
}
else if (*str < '0' || *str > '9')
{
return 0;
}
while (*str >= '0' && *str <= '9' && len < 11)
{
ret = ret * 10 + (*str - '0');
str++;
if (ret != 0)
{
len++;
}
}
ret *= flag;
if (ret < INT_MIN)
{
return INT_MIN;
}
if (ret > INT_MAX)
{
return INT_MAX;
}
return ret;
}
/*
int myAtoi(char* str) {
if(strlen(str)==0)
return 0;
char* xianzai= str;
long long fanhui = 0;
int flag = 1;//记录符号位正负
long long max = pow(2,31)-1;
long long min = pow(2,31);//溢出的上下界不相同
while (*xianzai == ' ')
{
xianzai++;//跳过空格位置
}
if (*xianzai == '-')
{
flag = -1;
xianzai++;
}
else if(*xianzai == '+')
{
xianzai++;
}
else if (*xianzai < '0' || *xianzai > '9')
{
return 0;
}
while (*xianzai >= '0' && *xianzai <= '9')
{
fanhui= fanhui*10;
fanhui=fanhui+*xianzai-'0';//利用符号本身的ascii码直接转换成数字
if(flag==1 && fanhui>max)
{
//正数溢出返回INT_MAX
return max;
}
else if(flag==-1&&fanhui>min)
{
return min;//注意int类型上下界数值上相差1
}
xianzai++;
}
return flag*fanhui;
}
*/
int main()
{
printf("%d\n", myAtoi("-1"));
printf("%d\n", myAtoi("456"));
printf("%d\n", myAtoi(" -42"));
printf("%d\n", myAtoi("a65r"));
printf("%d\n", myAtoi("9223372036854775808"));
printf("%d\n", myAtoi("-91283472332"));
printf("%d\n", myAtoi("4193 with words"));
printf("%ld,%ld\n", -pow(2, 31), pow(2, 31) - 1);
getchar();
return 0;
}