劍指Offer面試題 35 將字串轉換為數字

2021-09-07 22:37:45 字數 2674 閱讀 6774

題目:寫乙個函式strtoint,實現把字串轉換成整數這個功能。當然,不能使用atoi或者其他類似的庫函式。

(1)考慮輸入的字串是否是null、空字串

(2)考慮輸入的字串是否包含正負號或者是否是只包含正負號

(3)考慮輸入的字串是否會發生上溢或下溢(正整數的最大值是0x7fffffff,最小的負整數是0x80000000)

(4)考慮如何區分正常返回數字0和返回輸入是否合法的標識

綜上考慮,實現**如下,這裡使用c#語言描述:

①定義乙個convertresult的結構體,作為返回值使用

public

struct

convertresult

public

enum

convertstate

②定義方法主入口,在主入口中判斷輸入是否含有正負號並做對應處理

public

static convertresult strtoint(string

str)

else

if (strarray[startindex] == '-'

)

if (startindex !=strarray.length)

}return

result;

}

③定義核心方法strtointcore,將字串轉換為數字並為convertresult例項賦值,在此方法中判斷是否發生上溢或下溢

private

static

void strtointcore(char strarray, int index, bool minus, ref

convertresult result)

index++;

}else

}if (index ==strarray.length)

}

//

魯棒性測試:null指標

[testmethod]

public

void

stringtointtest1()

//魯棒性測試:空字串

[testmethod]

public

void

stringtointtest2()

//功能測試:普通的數字字串

[testmethod]

public

void

stringtointtest3()

//功能測試:帶正負號的數字字串

[testmethod]

public

void

stringtointtest4()

//功能測試:帶正負號的數字字串

[testmethod]

public

void

stringtointtest5()

//功能測試:帶正負號的字串0

[testmethod]

public

void

stringtointtest6()

//功能測試:帶正負號的字串0

[testmethod]

public

void

stringtointtest7()

//特殊輸入測試:非數字字串

[testmethod]

public

void

stringtointtest8()

//特殊輸入測試:有效的最大正整數 0x7fffffff

[testmethod]

public

void

stringtointtest9()

[testmethod]

public

void

stringtointtest10()

[testmethod]

public

void

stringtointtest11()

//特殊輸入測試:有效的最小負整數 0x80000000

[testmethod]

public

void

stringtointtest12()

[testmethod]

public

void

stringtointtest13()

[testmethod]

public

void

stringtointtest14()

//特殊輸入測試:只有乙個正號

[testmethod]

public

void

stringtointtest15()

//特殊輸入測試:只有乙個負號

[testmethod]

public

void

stringtointtest16()

(1)測試用例通過情況

(2)**覆蓋率統計

出處:

劍指offer面試題35

面試題35 第乙個只出現一次的字元 題目 在字串中找出第乙個只出現一次的字元。如輸入 abaccdeff 則輸入 b 預備知識 什麼是雜湊表?思路 構造乙個簡單的基於陣列的簡單雜湊表 key 字元,value 次數 字元的ascii碼作為字元的下標,統計次數作為陣列值。演算法實現和測試 面試題35....

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...

劍指offer面試題11

面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...