劍指Offer 把字串轉換成整數

2021-10-04 19:18:16 字數 1436 閱讀 2998

題目描述

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

輸入描述:

輸入乙個字串,包括數字字母符號,可以為空

輸出描述:

如果是合法的數值表達則返回該數字,否則返回0

解題步驟

我們可以遍歷字串,得到每個字元的值再依次加起來就可以得到整個整數了sum = sum*10 + num。

(1)首先我們需要先判斷第乙個字元是否是"+「或者」-"

(2)我們判斷該字元是否是乙個數字,如果不是數字就返回0

(3)對於數字的字元我們必須要判斷當前和是否越界,是否超出了整數的範圍。

(4)對於判斷是否超出整數範圍,不能直接判段 sum > integer.max_value,因為如果sum越界,這個判斷就會返回false無效,我們可以通過以下來判斷:

num1 > integer.max_value - num2 //判斷是否溢位最大值

num1 < integer.min_value - num2 //判斷是否溢位最小值

**

public

intstrtoint

(string str)

if(str.

charat

(i)==

'-')}if

(character.

isdigit

(str.

charat

(i))

)else

}return flag*sum;

}

題目描述:實現 int sqrt(int x) 函式。計算並返回 x 的平方根,其中 x 是非負整數。由於返回型別是整數,結果只保留整數的部分,小數部分將被捨去。

解題步驟:該題目很容易就能想到採用二分法,只不過在進行判斷的時候需要注意整數越界。

錯誤**示例:

正確**:

public

static

intmysqrt

(int x)

else

if(mid < x/mid)

else

return mid;

}return left;

}

劍指offer 把字串轉換成整數

字串轉成整數的核心 很簡單,但是需要考慮的各種情況很多。1 首位 的判斷。2 在 的溢位判斷。3 null 空字串的判斷。4 數字後面出現了很多非數字的情況。atoi函式是講前面的數字儲存下來,劍指offer 的 則是返回0。兩種情況都說的通,視情況而定吧。5 開頭出現了很多非數字,中間摻雜著數字的...

《劍指offer》 把字串轉換成整數

題目描述 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。這種題目交代不清楚,也沒啥技巧含量和思考價值,既然出現了,就順帶著做一下吧。code t 把字串轉換成整數 題目描述 將乙個字串轉換成乙個整數,要求不能使用字串轉換整數的庫函式。date 2015.12.10 20 17 auth...

劍指offer 把字串轉換成整數

輸入描述 輸入乙個字串,包括數字字母符號,可以為空 輸出描述 如果是合法的數值表達則返回該數字,否則返回0 示例1 輸入 2147483647 1a33 輸出 2147483647 0class solution int g status valid int strtoint string str ...