华为 18 实习 牛客网测试题解

1.最大滑动窗口索引

#coding=utf-8
import sys
if __name__ == "__main__":
    index = 0
    n =[]
    for i in range(0,21):
        a = sys.stdin.readline().strip()
        n.append(int(a))
    nums = n

    if len(nums) <= 4:
        print '0'
    else:
        max = 0
        maxindex = 0
        sum = 0
        for i in range(0, len(nums) - 3):
            sum = 0
            for j in range(i, i + 4):
                sum = sum + nums[j]
            if sum > max:
                max = sum
                maxindex = i
        print maxindex

2.键盘自然序转 qwer 序

#coding=utf-8
import sys
if __name__ == "__main__":
    a = sys.stdin.readline().strip()

    sort   = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    nature = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'

    b = []
    for i, char in enumerate(a):
        if char in sort:
            index = sort.index(char)
            b.append(nature[index])
        else:
            b.append(' ')
    print("".join( char for char in b))

3.最大子序列和  参考leetcode 53题讨论

#coding=utf-8
import sys
if __name__ == "__main__":
    a = sys.stdin.readline().strip()
    b = a.split(', ')
    nums = map(int, b)
    if not nums:
        print 0
    else:
        curSum = maxSum = nums[0]
        for i in range(1, len(nums)):
            num = nums[i]
            curSum = max(num, curSum + num)
            maxSum = max(maxSum, curSum)
        print maxSum

# 2, -3, 4, 11, -5, 8, 3, -6



你可能感兴趣的:(华为 18 实习 牛客网测试题解)