49 把字串轉成整數

2021-08-19 16:58:27 字數 1149 閱讀 5148

將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是乙個合法的數值則返回0

輸入乙個字串,包括數字字母符號,可以為空
如果是合法的數值表達則返回該數字,否則返回0
示例1

+2147483647

1a33

2147483647

0

思路:設定乙個check函式,判斷該字元是否為數字;對字串的首個字元進行判斷,若為『+』『-』,則設定好正負號,其後字元進行判斷,若不是數字則直接返回0,若是數字,則res = res*10 + ch - '0'

**:

class solution 

int strtoint(string str)

continue;

}if(isnum(str[i])) else

}return pos * res;

}};

方案二:

應考慮到多種非法情況,例如:空指標(null)、空字串(只有乙個『\0』)、數值越界、非法字串、首字元為『+』『-』、返回0時表示非法情況還是表示數值為0(需要設定全域性變數作為標誌位)

**如下:

class solution ;

int gstate = kvalid;

int strtoint(string str) else if(*cstr == '+')

while(*cstr != '\0')

} else

}if(gstate == kvalid)

num = num * minus;

}return (int)num;

}};

方案三(二刷版)

class solution ;

int gstate = invalid;

int strtoint(string str)

continue;

}if(str[i] >= '0' && str[i] <= '9')

} else

}gstate = valid;

return int(res);

}};

字串轉成整數

實現atoi這個函式,將乙個字串轉換為整數。如果沒有合法的整數,返回0。如果整數超出了32位整數的範圍,返回int max 2147483647 如果是正整數,或者int min 2147483648 如果是負整數。該題目較為複雜,需要分類討論多種情況。題意為將字串中出現的第乙個完整的整數返回,包括...

整數轉成字串

1.使用itoa函式 char itoa int value char string,int radix 原型說明 value 欲轉換的資料。radix 轉換後的進製數,可以是2進製 8進製 10進製 16進製制等。exmaple include include int main void 2.不利...

劍指offer 把字串轉成整數

時間限制 1秒 空間限制 32768k 熱度指數 259483 本題知識點 字串 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入乙個字串,包括數字字母符號,可以為空如果是合法的數值表達則返回該數字,否則返回0示例1 2147483647 ...