NC14270. Fancy Signal Translate
描述
输入描述
一行,一个01串。长度≤105
输出描述
一行,一个正整数,表示没有出现过的最短串的长度。
示例1
输入:
100010110011101
输出:
4
C++14(g++5.4) 解法, 执行用时: 175ms, 内存消耗: 1820K, 提交时间: 2020-10-05 21:33:39
#include<set> #include<iostream> using namespace std; int main() { string s; cin>>s; for(int i=1;;i++){ set<string>book;/*定义set容器 把字符串直接不重复插入*/ for(int j=0;j+i<=s.size();j++){ book.insert(s.substr(j,i));/*从 j 到 i 的子串*/ } if(book.size()<(1<<i)){/*若是出现不重复*/ cout<<i<<endl; break; } } return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 182ms, 内存消耗: 1780K, 提交时间: 2022-11-09 20:02:11
#include<bits/stdc++.h> using namespace std; int main(){ string s; cin>>s; for(int i=1;;i++){ set<string> q; for(int j=0;j+i<s.size();j++){ q.insert(s.substr(j,i)); } if(q.size()<(1<<i)){ cout<<i; break; } } return 0; }
Python3 解法, 执行用时: 834ms, 内存消耗: 7056K, 提交时间: 2021-10-08 21:00:08
import sys import itertools st=sys.stdin.readline() for i in range(1,len(st)+1): for k in itertools.product('01', repeat=i): tmp = "".join(k) if tmp not in st: print(i) exit()