上一题:LeetCode第7题: reverse-integer(C语言)
思路:考察遍历字符串,需要处理好正负号的问题,增加了一定的处理复杂度,整体不难
int myAtoi(char* str) {
int length = strlen(str);
long result = 0;
bool minus = false;
bool plus = true;
int start = -1, end = -1;
for(int i = 0; i < length; i++){
char current = str[i];
if(current == ' '){
if(start != -1){
break;
}
else if(minus == true || plus == false){
return 0;
}
else{
continue;
}
}
else if(current == '-'){
if(start == -1){
if(plus == false){
return 0;
}
else if(minus == true){
return 0;
}
else{
minus = true;
continue;
}
}
else{
break;
}
}
else if(current == '+'){
if(start == -1){
if(minus == true){
return 0;
}
else if(plus == false){
return 0;
}
else{
plus = false;
continue;
}
}
else{
break;
}
}
if(current >= 48 && current <= 57){
if(start == -1){
start = i;
}
end = i;
}
else if(start == -1){
return 0;
}
else{
break;
}
}
for(int i = start; start >= 0 && i < end + 1; i++){
result += (int) str[i] - 48;
if(i < end)
result *= 10;
if(result > INT_MAX)
break;
}
if(minus){
result = result * (-1);
}
if(result > INT_MAX){
return INT_MAX;
}
else if(result < INT_MIN){
return INT_MIN;
}
else{
return result;
}
}
本系列文章,旨在打造LeetCode题目解题方法,帮助和引导同学们开阔学习算法思路,由于个人能力和精力的局限性,也会参考其他网站的代码和思路,如有侵权,请联系本人删除。
下一题:LeetCode第9题: isPalindrome(C语言)
网友评论