程式設計之法面試和演算法心得-1.4字串轉換成整數
阿新 • • 發佈:2018-12-19
一、題目描述
輸入一個由數字組成的字串,請把它們轉換成整數並輸出。如輸入字串為“123”,輸出整數123。
python化成整數直接可以int(str),現在是自己實現這個函式。
二、解法
這道題看起來比前面的的幾道題都簡單許多,只需要把輸入字串的各個字元的acsii碼減去‘0’的acsii即可。從左向右掃描,依次乘10加當前字元轉義的int。參考程式碼如下:
def StrToInt(s): s= list(s) n = 0 for i in range(len(s)): c = ord(s[i]) - ord('0') n = n*10 + c return n
但是這裡有幾點需要注意:
- 首先判斷是否為空
- 判斷字元第一位是否輸入的為‘-’,如有,則要輸出為負整數
- 輸入的字串不能函式非數字的字元,除開‘-’
- 輸入的字串不能溢位int的最大表示整數
改進後參考程式碼如下:
def StrToInt(s): if (s ==""): return 0 s= list(s) n = 0 if(s[0]=='-'): for i in range(1,len(s)): if (s[i].isdigit()==True): c = ord(s[i]) - ord('0') n = n*10 + c return n * (-1) else: for i in range(len(s)): if (s[i].isdigit()==True): c = ord(s[i]) - ord('0') n = n*10 + c return n
改進後的程式碼首先判斷輸入不能為空,然後在判斷輸入的首位是否帶有‘-’,以此來判斷是否是負數。通過s[i].isdigit()來判斷當前字元是否為數字,以此過濾非數字字元。python這種高階語言,對int的位數優化的很好,所以不用擔心記憶體溢位。。。。