《劍指offer》面試題67 把字串轉換成整數

2021-09-11 15:23:25 字數 1501 閱讀 5855

思路:

此題比較麻煩的點是特殊情況較多,需要考慮完全。

1.如果字串前後有空格,要去除;

2.如果是空串或null,要特殊處理;

3.如果頭部有多個正負號,要特殊處理;

4.如果數值超出int的範圍,要特殊處理;比int的最大值還要大,已經上溢,這肯定不能通過數字的大小比較,所以需要在字串的狀態下判斷是否上溢或下溢。

5.遇到非數字的字元,則轉換停止;

剛剛發現乙個新的情況未做處理,在數字之前有多個0,如果0之後的數字有溢位情況,而前面的0又沒有去處,這種溢位就不會**獲,還缺這個情況的判斷。這種思路真心不好,一條主線是轉換成整數,中間穿插出很多特殊情況的分支,感覺就像在打補丁。

public class solution 

boolean isnegative = str.charat(0) == '-';

int ret = 0;

for (int i = 0; i < str.length(); i++)

ret = ret * 10 + (c - '0');

}return isnegative ? -ret : ret;

}}

package chapter7;

public class stringtoint

else

}public static void functest()

catch (exception e)

}public static void edgetest()

catch (exception e)

try

catch (exception e)

try

catch (exception e)

try

catch (exception e)

try

catch (exception e)

try

catch (exception e)

try

catch (exception e)

try

catch (exception e)

}public static void main(string args)

}

package chapter7;

public class stringtoint

return flag == 2 ? -(int)res : (int)res;//注意點3:返回值型別需要符合規範

}public static void main(string args)

}

注意點在**註解中。

測試用例:

a.功能測試(輸入的字串表示正數、負數和0)。

b.邊界值測試(最大的正數;最小的負數)。

c.特殊輸入測試(輸入的字串為nullptr指標;輸入的字串為空字串;輸入的字串中有非數字字元等)。

參考:

劍指Offer(面試題6 7)

面試題6 重建二叉樹 題目 輸入某二叉樹的前序和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。假如輸入前序遍歷序列和中序遍歷序列。二叉樹結點的定義如下 struct binarytreenode 我們可以寫出如下的遞迴 根據前序和中序遍歷的順序確定二叉樹結構...

劍指 面試題67 把字串轉換成整數

題目寫乙個函式 strtoint,實現把字串轉換成整數這個功能。不能使用 atoi 或者其他類似的庫函式。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。當我們尋找到的第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字組合起來,作為該整數的正負號 假如...

劍指offer面試題7

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