我的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...