8 字串轉整數 atoi

2021-08-25 02:35:45 字數 2026 閱讀 7884

一、題目

實現atoi,將字串轉為整數。

在找到第乙個非空字元之前,需要移除掉字串中的空格字元。如果第乙個非空字元是正號或負號,選取該符號,並將其與後面盡可能多的連續的數字組合起來,這部分字元即為整數的值。如果第乙個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。

字串可以在形成整數的字元後面包括多餘的字元,這些字元可以被忽略,它們對於函式沒有影響。

當字串中的第乙個非空字串行不是個有效的整數;或字串為空;或字串僅包含空白字元時,則不進行轉換。

若函式不能執行有效的轉換,返回 0。

說明:

假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231,  231 − 1]。如果數值超過可表示的範圍,則返回  int_max (231 − 1) 或 int_min (−231) 。

二、思路

這個題目是乙個比較簡單的字串處理題目,將處理好的字串轉化為整數,只是需要考慮的情況比較多。 

要考慮的情況包括下面這些: 

1、字串為空 

2、字串開頭有空格 

3、過濾掉字串開頭空格後字串變為空串 

4、字串是以數字開頭、正負號開頭、或者其他字元開頭 

以上情況就把特殊情況包含進去了,接下來是處理數字字串的情況,處理以上情況後我們能得到乙個新的字串,字串開頭為我們要轉化的數字,這時我們要考慮一下情況: 

1、數字字串為空串 

2、數字字串以0開頭 

3、數字字串過濾掉開頭0以後變為了空串 

處理了以上情況後我們就得到了要轉化為數字的字串,要求這個數字在int範圍內,因為長度超過10的都可以pass,其他的直接用long來轉化,再與int範圍進行比較進行相應輸出。 

三、**

public class leetcode8 

public static int myatoi(string str)

//過濾字串開頭空格

int pos = 0;

while (pos < str.length() && str.charat(pos) == ' ')

str = str.substring(pos, str.length());

//過濾空串

if ("".equals(str))

//資料為正或負 true為正

boolean operator = true;

string numstring;

//字串開頭非數字情況

if (str.charat(0) < '0' || str.charat(0) > '9')

//數字為負數

if (str.charat(0) == '-')

//獲取數值

numstring = getnumstr(str.substring(1, str.length()));

} else

//過濾資料部分為空串的情況

if ("".equals(numstring))

//過濾掉資料超出long的情況

if (numstring.length() > 10) else

}//轉化數值

long num = long.parselong(numstring);

if (!operator)

//根據結果範圍返回數值

if (num < integer.min_value)

if (num > integer.max_value)

return (int) num;

}/**

* 擷取字串的開頭數值

** @param s 字串

* @return 數值字串

*/private static string getnumstr(string s)

isstart = false;

} else

}return num.tostring();

}}

四、總結

8 字串轉整數(atoi)

實現atoi,將字串轉為整數。說明 這題解釋的比較模糊 即沒有指定輸入格式 你得事先匯集所有的輸入情況。atoi的要求 這個函式需要丟棄之前的空白字元,直到找到第乙個非空白字元。之後從這個字元開始,選取乙個可選的正號或負號後面跟隨盡可能多的數字,並將其解釋為數字的值。字串可以在形成整數的字元後包括多...

8 字串轉整數 atoi

測試案例 2 預期是0 2.14預期是2 0 123 預期是0 9223372036854775808 預期是2147483647 234 預期是0 123 預期是123 下面是反覆根據測試案例最後除錯成功,考慮情況太多複雜。不太好。class solution int temp str i 0 i...

LeetCode 8 字串轉整數(atoi

實現 atoi,將字串轉為整數。說明 這題解釋的比較模糊 即沒有指定輸入格式 你得事先匯集所有的輸入情況。atoi的要求 這個函式需要丟棄之前的空白字元,直到找到第乙個非空白字元。之後從這個字元開始,選取乙個可選的正號或負號後面跟隨盡可能多的數字,並將其解釋為數字的值。字串可以在形成整數的字元後包括...