【題目】
給定乙個字串str,如果str符合日常書寫的整數形式,並且屬於32位整數的範圍,輸出str所代表的整數值,否則輸出無效。
【示例】
str="" : invalid
str=「123」 : 輸出123
str=「012」 : invalid(不合書寫習慣)
str=「123a」 : invalid
str=「2147483648」 : invalid(溢位)
【解答】
一、首先檢查是有效的整數形式
1.如果str為空串,返回false。
2.如果str以』0』開頭,但是str的長度大於1,如,str=="012",返回false。
3.如果str以』0』開頭,但是str的長度為1,即str=="-",返回false。如果str的長度大於1,但是』1』的後面緊跟著「0」,如,str=="-0"或"-012",返回false。
4.如果str不以』-『開頭,也不以數字字元開頭,例如,str=="a12",返回false。
5.如果經過步驟1~步驟4都沒有返回,接下來檢查str[1…n-1]是否都是數字字元,如果有乙個不是數字字元,則返回false。
6.如果經過步驟5沒有返回,說明str符合日常書寫,檢查是否有溢位。如果開頭不為』-』,說明str所代表的整數為正數,此時如果str比"2147483647"按字典排序要大,則有溢位,返回false;同理如果str所代表的整數為負數,且str比"-2147483647"按字典排序大,則有溢位,返回false
7.經過步驟1~步驟6都沒有返回,返回true
public
static
boolean
isvalid
(string str)
return
true
;}
二、整數轉換用整型變數t記錄str所代表的整數的符號。如果str以』-'開頭,則t = -1 從str[1]開始從左往右遍歷str,否則從str[0]開始從左往右遍歷str。因為在進行轉換之前已經進行過溢位判斷,所以在遍歷過程中不需要考慮溢位問題。
public
static
intchangetointeger
(string str)
三、執行
將整數字串轉成整數值
給定乙個字串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...