劍指offer 把字串轉化為整數

2022-07-29 03:48:10 字數 1324 閱讀 4192

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

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

+2147483647

1a33

2147483647

0思路:字串轉化為整數的方法num = num * 10 + str[i] - '0';

特殊情況:1、輸入字串為null;

2、輸入字串只有+/-;

3、轉化的數字大於最大值或小於最小值;

4、輸入的字串有字母。

使用乙個全域性變數進行處理,因為非法情況需要返回0,但是字串只有0時,也只能返回0,需要使用乙個全域性變數來進行辨別。

全部變數賦值技巧,首先賦值為true,進行程式就需要賦值為false,如果沒有進行運算,說明是非法情況1、2,呼叫函式後,

如果是最大最小值退出的情況,全部變數也是false,只有正常處理完字串遇到\0之後,才能修改全域性變數,變為true。

class

solution */}

else

}if(str[i] == '\0'

)

return minus == -1 ? -num : num;

}int strtoint(string

str)

//find + / -

status = true

;

int minus = 1

;

char *p = new

char(str.size() + 1

);

char * tmp =p;

strcpy(p,str.c_str());

//首先判斷是正數還是負數

if(p[0] == '+'

)

if(p[0] == '-'

)

int result = 0;//

首先初始化為0,如果只有乙個+/-那麼不會呼叫函式直接返回0

if(*p != '

\0')

delete tmp;//

刪除首位址開始的那一片記憶體位址。

return

result;

}};

delete刪除的必須是首位址,因為p已經發生了移位操作不是首位址了,所以需要最開始的儲存首位址。

劍指offer面試題 49 把字串轉化為整型

題目 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入描述 輸入乙個字串,包括數字字母符號,可以為空。輸出描述 如果是合法的數值表達則返回該數字,否則返回0。示例1 分析 我們知道大多數情況下越簡單的問題可能越容易出錯,這個題目很多人,包括...

劍指offer 將字串轉化為整數

題目描述 將乙個字串轉換成乙個整數 實現integer.valueof string 的功能,但是string不符合數字要求時返回0 要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0。輸入描述 輸入乙個字串,包括數字字母符號,可以為空 解題思路 先將字串轉化為陣列,要將字...

劍指offer 把字串轉化成整數

將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。數值為0或者字串不是乙個合法的數值則返回0 輸入乙個字串,包括數字字母符號,可以為空 如果是合法的數值表達則返回該數字,否則返回0。字串從頭開始遍歷,判斷第乙個字元是 或 來確定正負值,後續需要判斷char是否再0到9的ascii碼之間,需...