整數字串轉成整數數值

2021-10-25 03:29:11 字數 1405 閱讀 7543

【題目】

給定乙個字串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...