题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647
1a33
输出
2147483647
0
代码:
# -*- coding:utf-8 -*-
class Solution:
def StrToInt(self, s):
# write code here
num=0
label=1
start=0
if s == '':
return 0
if s[0] =="+":
start = 1
elif s[0] =="-":
label=-1
start =1
for i in range(start,len(s)):
if s[i]>'9' or s[i]<'0':
return 0
else:
num=num+label*int(s[i])*10**(len(s)-1-i)
return num
思路:先记录下字符串首个字符的符号(用start标记),如果有“+”、“-”,下一个字符判断从s[1]开始,否则也要用if s[i]>‘9’ or s[i]<'0’判断第一个字符s[0]是否为字母或其他。
题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
class Solution:
# 这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
# 函数返回True/False
def duplicate(self, numbers, duplication):
# write code here
res = []
for each in numbers:
if each in res:
duplication[0] = each
return True
else:
res.append(each)
return False
生成一个新空数组res,开始往里面加元素,如果后面加进来的数字和前面先进来的数字重复了,就赋值给duplication[0]。