题目描述
对于一个连续正整数组成的序列,可以将其拼接成一个字符串,再将字符串里的部分字符打乱顺序。如序列8 9 10 11 12,拼接成的字符串为89101112,打乱一部分字符后得到90811211,原来的正整数10就被拆成了0和1。
现给定一个按如上规则得到的打乱字符的字符串,请将其还原成连续正整数序列,并输出序列中最小的数字。
输入描述
输入一行,为打乱字符的字符串和正整数序列的长度,两者间用空格分隔,字符串长度不超过200,正整数不超过1000,保证输入可以还原成唯一序列。
输出描述
输出一个数字,为序列中最小的数字。
示例1
输入
19801211 5
输出
8
示例2
输入
432111111111 4
输出
111from collections import Counter
def recover_data(s,n):
count = Counter(s)
for i in range(1, 1000):
data = [str(i+j) for j in range(n)]
length_data = sum(len(k) for k in data)
if length_data != len(s):
continue
if count == Counter(''.join(data)):
print(data)
return int(data[0])
if __name__ == '__main__':
s = input()
n = int(input())
print(recover_data(s,n))这里暴力破解显然不是一个好的方法,之后考虑使用滑动窗口