剑指offer

题目描述

将一个字符串转换成一个整数(实现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]。

你可能感兴趣的:(心得,笔记)