数据结构笔试题2

version_4

1.旋转字符串
def rotate_strings(A, p):
	if A is None or len(A) == 1:
		return A
	else:
		listA = list(A)
		list1 = listA[:p]
		list2 = listA[p:]
		result = list2 + list1
		return "".join(result)
2.将字符串转换为整数
def str_to_int(string):
	res,mult,flag = 0,1,1
    if not string:
        return res
    if string[0] == '-' or string[0] == '+':
        if string[0] == '-':
            flag = -1
        string = string[1:]
    for i in range(len(s)-1, -1, -1):
        if '0' <= string[i] <= '9':
            res += (ord(s[i]) - 48) * mult
            mult = mult * 10
        else:
            return 0
    return res*flag

version_5

1.寻找数组中出现一半次数的数
def HalfLengthSolution(numbers):
	if len(numbers) == 0:
		return None
	count = 1
    now = numbers[0]
    length = len(numbers)
    for i in range(1,length):
    	if count == 0:
        	now = numbers[i]
            count += 1
        else:
            if numbers[i] == now:
                count += 1
            else:
                count -= 1
    test = 0
    for item in numbers:
        if item == now:
            test += 1
    if test > length/2:
        return now
    else:
        return None
2.寻找数组中第一个只出现一次的数字
def find_only_one_number(numbers):
	if not numbers:
		return None
	elif len(numbers) == 1:
		return numbers[0]
	else:
		for i in numbers:
			if numbers.count(i) == 1:
				return i
			else:
				return None
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值