刷题LeetCode

1、给定一个 n × n 的二维矩阵表示一个图像。 将图像顺时针旋转  90 度。

说明:

你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋 转图像。

示例 1:

给定  matrix  =

[

[1,2,3],

[4,5,6],

[7,8,9]

],

原地旋转输入矩阵,使其变为: [

[7,4,1],

[8,5,2],

[9,6,3] 

]

def rotate(matrix):
    n = len(matrix[0])
    for i in range(n):
        for j in range(i,n):
            matrix[j][i], matrix[i][j] = matrix[i][j],matrix[j][i]
            print(matrix)
    for i in range(n):
        matrix.reverse()
    print(matrix)
    return matrix


nums = [
    [1,2,3],
    [4,5,6],
    [7,8,9]
]
print(rotate(nums))

 2、 自定义字符串排序

字符串 S 和 T 只包含小写字符。在 S 中,所有字符只会出现一次。

S 已经根据某种规则进行了排序。我们要根据 S 中的字符顺序对 T 进行排序。更具体地说,如果

S 中 x 在 y 之前出现,那么返回的字符串中 x 也应出现在 y 之前。

 回任意一种符合条件的字符串 T。

算法:

1、先遍历字符串T,如果不在S中,直接加入到结果中,不考虑顺序;如果在S中,我们需要记录出现的次数,

这时考虑用字典来这个结果

2、定义一个字典:d,用来存T字符串在S 中出现的次数

3、最后凭借字符串就可以的出结果

def SortStr(T,S):
    d = dict.fromkeys(S,0)
    res = ''
    for i in T:
        if i in S:
            d[i] += 1
        else:
            res += i
    #print(d)
    for i in S:
        res += i * d[i]
    return res

print(SortStr('cba','abcdeabc'))

方法二:

算法:利用enumerate()函数同时列出数据和数据的下标,从数据的小标从0开始;

def SortStr(S,T):
    d = {letter:index for index ,letter in enumerate(S)}
    #print(d)
    #print(sorted(T, key = lambda x: d.get(x,-1)))
    return ''.join(sorted(T, key = lambda x: d.get(x,-1)))

print(SortStr('cba','cbdadcc'))

 

原文地址:https://www.cnblogs.com/ff-gaofeng/p/12009979.html