题解 | 宝石手串
宝石手串
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)
然后平时计算破坏最短 把首位现连然后计算哈希即可