題目描述:
給定乙個字串str,如果str符合日常書寫的整數形式,並且屬於32位整數的範圍,返回str所代表的整數值,否則返回0。
舉例:str=「123」,返回123
str=「023」,因為「023」不符合日常的書寫習慣,所以返回0
str=「a13」,返回0
str=「0」,返回0
str=「2147483647」,返回2147483647
str=「2147483648」,因為溢位了,所以返回0
str=「-123」,返回123
思路:首先檢查str是否符合日常書寫的整數形式
1public
boolean isvalid(char
chas)
5if (chas[0]=='-'&&(chas.length==1||chas[1]=='0'))
8if (chas[0]==0&&chas.length>1)
11for (int i=0; i) 15}
16return
true
;17 }
valid adj. 有效的;有根據的;合法的;正當的(寫**順便記記單詞,英語太差!!)
convert方法:
publicclass
solution
if (chas[0]=='-'&&(chas.length==1||chas[1]=='0'))
if (chas[0]=='0'&&chas.length>1)
for (int i=1; i)
}return
true
; }
public
intconvert(string str)
char chas=str.tochararray();
if (!isvalid(chas))
boolean posi=chas[0]=='-'?false:true
;
int minq=integer.min_value/10;
int minr=integer.min_value%10;
int res=0;
int cur=0;
for (int i=posi?0:1; i)
res=res*10+cur;
}if (posi&&res==integer.min_value)
return posi?-res:res;
}}
測試了好多用例,應該沒錯!!
下乙個部落格是leetcode8 字串轉換整數(atoi)
將整數字串轉成整數值
給定乙個字串s,如果字串符合日常書寫的整數形式,並且屬於32位整數的範圍,返回str所代表的整數值,否則返回0.比如 s 123 則返回123.s 0123 則返回0.s 123 則返回 123.s 0 返回0.s 返回0.s 123a4 返回0.首先,需要判斷字串中是否有非法字元,具體 如下 pu...
將整數字串轉成整數值
題目 給定乙個字串str,如果str符合日常書寫的整數形式,並且屬於32位整數的範圍,返回所代表的整數值,否則返回0。eg str 123 返回123.str 023 因為 023 不符合日常的書寫習慣,所以返回0.str a23 返回0 str 0 返回0 str 2147483647 返回214...
將整數字串轉成整數值
題目 給定乙個字串str,如果str符合日常書寫的整數形式,並且屬於32位整數的範圍,返回所代表的整數值,否則返回0。eg str 123 返回123.str 023 因為 023 不符合日常的書寫習慣,所以返回0.str a23 返回0 str 0 返回0 str 2147483647 返回214...