字串的轉換leetcode 8

2021-10-03 22:00:19 字數 1197 閱讀 3546

1.這個題其實不難,但是涉及到好多小的知識點,邊界條件之類的。所以實現起來有點費勁。其實自己也想到了就是不會敲**,還是基礎知識不夠紮實。一點一點積累吧。

public class solution 

index++;

}if (index == len)

// 第 1 個字元如果是符號,判斷合法性,並記錄正負

int sign = 1;

char firstchar = str.charat(index);

if (firstchar == '+') else if (firstchar == '-')

// 不能使用 long 型別,這是題目說的

int res = 0;

while (index < len)

// 題目中說:環境只能儲存 32 位大小的有符號整數,因此,需要提前判斷乘以 10 以後是否越界

if (res > integer.max_value / 10 || (res == integer.max_value / 10 && (currchar - '0') > integer.max_value % 10))

if (res < integer.min_value / 10 || (res == integer.min_value / 10 && (currchar - '0') > -(integer.min_value % 10)))

// 每一步都把符號位乘進去

res = res * 10 + sign * (currchar - '0');

index++;

}return res;

}}

結論:

1.其實判斷int是否越界是不用這麼麻煩的,這裡是因為最終的結果是不斷變化的,所以麼一次得到當前最終結果的時候都要進行判斷是否越界,如果越界了就不會進行下一步的組裝,直接給出返回值。如果有多個變數,保留當前的和之前的結果,那麼也可以不用這麼麻煩的。但是**還是題解中給出的是最簡潔的。

if(resault>integer.max_value||resault2.想得到當前數字字元對應的數字時,可以直接進去』0』字元,這樣就得到了對應的數字。

3.還有就是直接對當前字元與『0』『9』字元進行比較就行了,不需要先變成數字在比較,因為不變符合要求的就不會進行接下來的操作。

也可以用正規表示式來做

正規表示式

leetcode 8 字串轉換整數

思路 1 首先去除空白符,然後判斷字元是否為空,為空 當原字串是空或者全空格符 返回0 2若第乙個非空字元為 號 if只有乙個字元 或者 第二個字元不是數字,返回0 這裡邏輯要注意 這裡面or的邏輯是 只有乙個字元 or 有2個字元且第二個字元不為數字 else 遍歷字串,若當前字元是整數,加入re...

LeetCode 8 字串轉換整數

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

leetcode 8 字串轉換整數

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