知识点:数学、字符串
难度:较难
题目描述:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例:
输入:
+2147483647
1a33
输出:
+2147483647
1a33
详解:
# -*- coding:utf-8 -*-
class Solution:
def StrToInt(self, s):
# write code here
res,mult,flag = 0,1,1
#如果字符串为空,返回0
if not s:
return 0
#如果字符串的首位是符号位,则取符号位后面的数字
if s[0] == '-' or s[0] == '+':
if s[0] == '-':
flag = -1
s = s[1:]
for i in range(len(s)-1, -1, -1):
if '9' >= s[i] >= '0':
res += (ord(s[i]) - 48)*mult
mult = mult * 10
else:
return 0
return res*flag
知识点:
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
ord(c)
- c – 字符。
- 返回值是对应的十进制整数。
>>>ord('a')
97
>>> ord('b')
98
>>> ord('c')
99