LeetCode題解 字串轉整數 atoi

2021-10-24 15:52:56 字數 1915 閱讀 5536

我的leetcode**集:

題目描述:

知識點:字串

對於這一題來說,難點不在演算法的實現上,難點在理解題意並正確處理各種邊界或者特殊情況上。

(1)如果第乙個非空字元是正號或負號,選取該符號,並將其與後面盡可能多的連續的數字組合起來,這部分字元即為整數的值。

(2)如果第乙個非空字元是數字,則直接將其與之後連續的數字字元組合起來,形成整數。

(3)如果第乙個非空字元既不是正號或負號,也不是數字,返回0。

(4)如果字串為空,或者字串內只包含空字元,返回0。

(5)如果第乙個非空字元是正號或負號,但接下來的第二個字元不是數字,返回0。對於"±2"、"+ 2"這兩種情況,都返回0。

(6)如果數值超過可表示的範圍 [−2^31, 2^31 − 1],則返回 int_max (2^31 − 1) 或 int_min (−2^31) 。實現時用integer.valueof()函式丟擲的異常來判斷整數越界

注意:字元比較要用"==",但字串比較要用equals()方法。

時間複雜度和給的字串中第乙個空白字元出現的位置,以及其後或者第乙個正負號其後連續的數字個數有關,但一定是小於o(n)時間複雜度的,其中n為字串的長度。空間複雜度和時間複雜度相同。

**如下:

package com.m.string_to_integer_atoi;

public

class

solution1

if(i == n ||!(

(str.

charat

(i)==

'+')

||(str.

charat

(i)==

'-')

||(str.

charat

(i)>=

'0'&& str.

charat

(i)<=

'9')))

stringbuilder stringbuilder =

newstringbuilder()

;if(str.

charat

(i)==

'-')

else

if(str.

charat

(i)==

'+')

if(i == n ||

!(str.

charat

(i)>=

'0'&& str.

charat

(i)<=

'9')

)while

(i < n && str.

charat

(i)>=

'0'&& str.

charat

(i)<=

'9')

trycatch

(exception e)

else}}

}

leetcode解題報告:

測試**:

package com.m.string_to_integer_atoi;

public

class

test1

; solution1 solution1 =

newsolution1()

;int temp;

for(

int i =

0; i

}

分解字串

按要求分解字串,輸入兩個數m,n m代表輸入的m串字串,n代表輸出的每串字串的位數,不夠補0。例如 輸入2,8,abc 123456789 則輸出為 abc00000 12345678 90000000 分析思路 1.獲得字串的長度length後,判斷與 要輸出位數n 的大小,大於n的話,直接 pr...

詳解字串

學習了一段時間的c c 準備做一些相關的總結。隨著學習的深入會經常改進部落格。一 定義乙個字串的兩種方式 1.用乙個字元陣列。2.用乙個指標指向字串。char arr 20 char s 20 shanghai char z beijing 二 列印出字串的方式。printf s n arr pri...

strtok s分解字串

char strtok s char str,要分解的字串 const char delimiters,分隔符 char context 後續待分解字串 wcstok s是strtok s的寬字元版本 wchar t wcstok s wchar t str,const wchar t delimi...