题解 | 宝石手串

宝石手串

https://www.nowcoder.com/practice/9648c918da794be28575dd121efa1c50

import sys
index = 0
count = None
count_s = None
for line in sys.stdin:
    a = line.split("\n")[0]
    if index == 0:
        index +=1
        continue
    if index % 2 != 0:
        count = int(a)
    else:
        if a[-1] == a[0]:
            print(0)
            index+=1
            continue
        if len(set(a)) == len(a):
            print(-1)
            index+=1
            continue
        # 找到相邻距离最短的两个字母
        count_s = a + a
        d = {}
        ix = 0
        m = 100000
        for _ in count_s:
            if _ not in d:
                d[_]=ix
            else:
                m = min(m,ix-d[_]-1)
                d[_] =ix
            ix += 1
        m = -1 if m == 100000 else m
        print(m)
    index +=1

模拟

判断无法破坏就是len(set(a)) == len(a)

然后平时计算破坏最短 把首位现连然后计算哈希即可

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务