fork download
  1. #include<bits/stdc++.h>
  2. #define REP(a, b, c) for(int i=a;i<b;i=i+c)
  3. typedef long long ll;
  4. using namespace std;
  5.  
  6. int main(){
  7. string s1, s2;
  8. getline(cin, s1);
  9. getline(cin, s2);
  10.  
  11. if(s1.length() < s2.length()){
  12. cout<<"No string";
  13. return 0;
  14. }
  15. int left=0, right=0;
  16. unordered_map<char, int> umap;
  17. unordered_map<char, int> vmap;
  18. int window=0;
  19. REP(0, s2.length(), 1){
  20. umap[s2[i]]++;
  21. }
  22. window= umap.size();
  23. string ans="";
  24. int min=INT_MAX;
  25. while (right<s1.length())
  26. {
  27. if(vmap.size() < window){
  28. if(umap.count(s1[right]) > 0){
  29. vmap[s1[right]]++;
  30. }
  31. right++;
  32. }
  33. else{
  34. if(min > right-left){
  35. min=right-left;
  36. ans=s1.substr(left, min);
  37. }
  38. if(umap.count(s1[left]) > 0){
  39. vmap[s1[left]]-=1;
  40. if (vmap[s1[left]]==0){
  41. vmap.erase(s1[left]);
  42. }
  43. }
  44. left++;
  45. }
  46. }
  47. if(ans.compare("")==0)
  48. cout<<"No string";
  49. else
  50. cout<<ans;
  51. }
Success #stdin #stdout 0s 4340KB
stdin
qwerty asdfgh qazxsw
qas
stdout
qazxs