題目描述:寫乙個方法,檢查字串是否為整數,那麼返回整數值。
分析與解答: 整數分為負數和非負數,負數只有一種表示方法,而非負數可以有兩種表示方法。例如111,-111,+111,因此在判斷字串是否為整數的時候,需要把這幾個問題都考慮到。下面說兩個方法,
方法一:遞迴法:對於整數而言,例如111,可以看成11*10+1,而11又可以看成1*10+1。而-111可以看成(-11)*10-1,-11可以看成(-1)*10-1.根據這個特點可以採用遞迴的方法求解,可以先根據字串的第乙個字元確定整數的正負,接著對字串從右向左遍歷.
class test:
def __init__(self):
self.flag = none
def getflag(self):
return self.flag
# 判斷c是否是數字,如果是返回數字,且設定flag=true,否則返回false
def isnumber(self, c):
return c >= '0' and c <= '9'
# 判斷str是否是數字
def strtoint(self, strs, length):
if length > 1:
if not self.isnumber(list(strs)[length - 1]):
# 不是數字
print("不是數字")
self.flag = false
return -1
if list(strs)[0] == '-':
return self.strtoint(strs, length - 1) * 10 - (ord(list[length - 1]) - ord('0'))
else:
return self.strtoint(strs, length - 1) * 10 + ord(list(strs)[length - 1]) - ord('0')
else:
if list(strs)[0] == '-':
return 0
else:
if not self.isnumber(list(strs)[0]):
print("不是數字")
self.flag = false
return -1
return ord(list(strs)[0]) - ord('0')
def strtoint(self, s):
self.flag = true
if s == none or len(s) <= 0 or (list(s)[0] == '-' and len(s) == 1):
print("不是數字")
self.flag = false
return -1
if list(s)[0] == '+':
return self.strtoint(s[1:len(s)], len(s) - 1)
else:
return self.strtoint(s, len(s))
方法二:非遞迴法
首先通過乙個字元的值確定整數的正負性,然後去掉符號位,把後面的字串當做正數來處理,處理完成後再根據正負性返回正確的結果。實現方法為從左向右遍歷字串計算整數的值,以「123」為例,遍歷到'2'的時候結果為1*10+2=12,遍歷到『3』的時候結果為12*10+3=123。
class test:
def __init__(self):
self.flag = none
def getflag(self):
return self.flag
# 判斷c是否是數字,如果是返回true,否則返回false
def isnumber(self, c):
return c >= "0" and c <= "9"
def strtoint(self, strs):
if strs == none:
self.flag = false
print("不是數字")
return -1
self.flag = true
res = 0
i = 0
minus = false # 是否是負數
if list(strs)[i] == '-': # 結果是負數
minus = true
i += 1
if list(strs)[i] == '+': # 結果是正數
i += 1
while i < len(strs):
if self.isnumber(list(strs)[i]):
res = res * 10 + ord(list(strs)[i]) - ord('0')
else:
self.flag = false
print("不是數字")
return -1
i += 1
return -res if minus else res
if __name__ == "__main__":
t = test()
s = "-543"
print(t.strtoint(s))
s = "543"
print(t.strtoint(s))
s = "+543"
print(t.strtoint(s))
s = "++43"
result = t.strtoint(s)
if t.getflag():
print(result)
如何判斷字串是否是整數python實現
寫乙個方法,檢查字串是否是整數,如果是整數,那麼返回其整數值。整數分為負數與非負數,負數只有一種表示方法,而非負數可以有兩種表示方法。例如 123,123 123。因此在判斷字串是否為整數的時候,需要把這幾個問題都考慮到。首先通過第乙個字元的值確定整數的正負性,然後去掉符號位,把後面的字串當做正數 ...
JAVA判斷字串是否整數
1.使用型別轉換判斷 try catch exception e 2.使用正規表示式判斷 string str abc123 boolean isnum str.matches 0 9 表示1個或多個 如 3 或 225 表示0個或多個 0 9 如 或 1 或 22 表示0個或1個 0 9 如 或 ...
判斷字串是否是中文
一,判斷字元是否是中文 1 通過編碼判斷單個字元是否是中文。如下 判斷乙個字元是中文還是英文 public static bool ischinese char c 1 將字串轉換成字元陣列,遍歷字元陣列判斷每個字元是否是中文。如下 判斷字串中是否包含中文 public static bool is...