ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

MicroSoft interview 2022 test1

2022-08-15 17:31:01  阅读:225  来源: 互联网

标签:test1 count item len print swap __ interview MicroSoft


MicroSoft interview 2022 test1
Programing
one

点击查看代码
def solution(S, B):
    # write your code in Python (Python 3.6)
    fixed = 0
    holes = []
    len_hole = 0
    for idx in range(len(S)):
        # print(S[idx])
        if S[idx] == 'x':
            len_hole += 1
        else:
            if len_hole > 0:
                holes.append(len_hole)
                len_hole = 0
    if len_hole > 0:
        holes.append(len_hole)
    # print("1:", holes)
    holes = sorted(holes)
    # print("2:", holes)
    for item in holes[::-1]:
        cost = item + 1
        if B >= cost:
            B -= cost
            fixed += item
        elif 1 < B < cost:
            fixed += B - 1
            B = 0
        else:
            break
    return fixed


if __name__ == '__main__':
    # A = 24
    S = '...xxx..x....xxx.'
    B = 7
    lea_count = solution(S, B)
    print(lea_count)

two
点击查看代码
def solution(S):
    # write your code in Python (Python 3.6)
    min_swap = 0
    r_swap, l_swap = [], []
    sub_s = []
    start, end = 0, 0
    for idx, item in enumerate(S):
        if item == 'R':
            start = idx
            break
    for idx, item in enumerate(S[::-1]):
        if item == 'R':
            end = len(S) - idx
            break
    # print(start, end)
    S = S[start:end]
    # print(S)
    r_count = 0
    w_count = 0
    for item in S:
        if item == 'R':
            r_count += 1
        else:
            w_count += 1
            l_swap.append(r_count)
    r_count = 0
    for item in S[::-1]:
        if item == 'R':
            r_count += 1
        else:
            r_swap.append(r_count)
    r_swap = r_swap[::-1]
    for l, r in zip(l_swap, r_swap):
        min_swap += min(l, r)
        if min_swap > 1e9:
            min_swap = -1
            break

    return min_swap


if __name__ == '__main__':
    # A = 24
    S = 'WRW' * 10000
    B = 7
    lea_count = solution(S)
    print(lea_count)

three
点击查看代码
# you can write to stdout for debugging purposes, e.g.
# print("this is a debug message")

# def solution(A, B, S):
#     # write your code in Python (Python 3.6)
#     if len(set(A + B)) < len(A):
#         return False
#     fixed = [0] * S
#     flag = True
#     while flag:
#         for i in range(len(A) - 1):
#             for j in range(i + 1, len(A)):
#                 if A[i] == A[j]:
#                     if fixed[i] == 0:
#                         fixed[i] = 1
#                         A[i] = B[i]
#                     else:
#                         return False
#         flag = False
#     # print(A)
#     return True

def solution(A, B, S):
    # write your code in Python (Python 3.6)
    slices = set(A + B)
    if len(slices) >= len(A):
        assigned = True
    else:
        assigned = False
    # print(A)
    # a = ["a", "b", "a", "c", "a", "c", "b", "d", "e", "c", "a", "c"]
    # # set集合去重
    # duixiang = set(a)  # 先去重,取出计数对象
    # # 保存为dict,一一对应
    # d = {}
    # for i in duixiang:
    #     d[i] = a.count(i)
    # # 对字典按value排序
    # a = sorted(d.items(), key=lambda x: x[1], reverse=True)
    return assigned


if __name__ == '__main__':
    # False
    A = [1, 2, 4, 2, 4, 6, 7, 5]
    B = [2, 1, 3, 7, 5, 5, 6, 4]
    S = 8

    # True
    # A = [1, 2, 2]
    # B = [3, 1, 3]
    # S = 3

    # True
    # A = [1, 2, 2, 8, 4, 6, 7, 6]
    # B = [2, 1, 3, 7, 5, 5, 6, 4]
    # S = 8

    # True
    # A = [1, 1, 4, 8, 4, 6, 7, 6]
    # B = [2, 2, 3, 7, 5, 5, 6, 4]
    # S = 8

    # True
    # A = [1] * 100000
    # B = [(i + 1) % 100001 for i in range(1, 100000)] + [1000]
    # S = 100000

    lea_count = solution(A, B, S)
    print(lea_count)

标签:test1,count,item,len,print,swap,__,interview,MicroSoft
来源: https://www.cnblogs.com/Coulson/p/16589019.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有