fork download
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int n;
  8. cin >> n;
  9.  
  10. int k;
  11. cin >> k;
  12.  
  13. string g;
  14. cin >> g;
  15.  
  16. int count = 0;
  17. unordered_map<int, int> b;
  18.  
  19. int p = 1;
  20. while (p <= 9)
  21. {
  22. int t = p * k; // 1*k = 1k , 2*k =2k ...till it will go till 10k
  23.  
  24. if (t > n)
  25. {
  26. break;
  27. }
  28.  
  29. b.clear(); // clear the frequency map for new window size or else it will get carry forward
  30.  
  31. for (int i = 0; i <= n - 1; i++)
  32. {
  33. if (i < t - 1)
  34. {
  35. //convert character to integer
  36. int number = g[i] - '0';
  37. b[number] = b[number] + 1; // basically we are storing in map
  38. }
  39. else
  40. {
  41. //-------------jaise hee 'k' index pe aata Hu 'k' wala add kar deta hu -----------------------
  42. // convert the character to integer
  43. int number = g[i] - '0';
  44. b[number] = b[number] + 1;
  45. //--------------------------------
  46.  
  47. int l = 0;
  48. int u = 0;
  49.  
  50. while (l <= 9)
  51. {
  52. if (b[l] == k || b[l] == 0)
  53. {
  54. // valid substring
  55. }
  56. else
  57. {
  58. u = 1;
  59. break;
  60. }
  61.  
  62. l = l + 1;
  63. }
  64.  
  65. if (u == 0)
  66. {
  67. count = count + 1;
  68. }
  69.  
  70. //-----------uske just piche wala nikkal deta hu ...matlab window size 'k' maintain rehega proper answer aayega -----------------
  71. int y = g[i - t + 1] - '0';
  72. b[y] = b[y] - 1;
  73. //-----------------------------
  74. }
  75. }
  76.  
  77. p++;
  78. }
  79.  
  80. cout << count;
  81. }
  82.  
Success #stdin #stdout 0s 5320KB
stdin
6
3
111222
stdout
3