fork(8) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int contains_not_more_one_odd_characters_that_are_in_final(int freq[], int freqfinal[])
  4. {
  5. int count=0;
  6. for(int i=0;i<=9;i++)
  7. {
  8. if(freq[i]==freqfinal[i]&&freq[i]%2==1)
  9. count++;
  10. }
  11. //cout<<" ct "<<count<<endl;
  12. if(count>0)
  13. return 0;
  14. return 1;
  15. }
  16. int findlen(int freq[])
  17. {
  18. int ct=0;
  19. for(int i=0;i<=9;i++)
  20. if(freq[i]%2==1)
  21. ct++;
  22. if(ct>0)
  23. return 0;
  24. int val =0;
  25. for(int i=0;i<=9;i++)
  26. val+= freq[i];
  27. return val;
  28. }
  29. int main()
  30. {
  31. int t;
  32. scanf("%d",&t);
  33. while(t-->0)
  34. {
  35. string s;
  36. cin>>s;
  37. int freq[10],freqfinal[10];
  38. for(int i=0;i<=9;i++)
  39. {
  40. freq[i] =0;
  41. freqfinal[i] =0;
  42. }
  43. for(int i=0;i<s.size();i++)
  44. freqfinal[s[i]-'0']++;
  45. int i=0,j=1;
  46. freq[s[i]-'0']++;
  47. int max_length=0,ct=1;
  48. for(int i=1;i<s.size();i++)
  49. {
  50. if(s[i-1]==s[i])
  51. ct++;
  52. else
  53. ct =1;
  54. max_length = max(max_length,ct-ct%2);
  55. }
  56. while(j<s.size())
  57. {
  58. //cout<<i<< " "<<j<<endl;
  59. if(contains_not_more_one_odd_characters_that_are_in_final(freq,freqfinal))
  60. {
  61. freq[s[j]-'0']++;
  62. max_length = max(max_length,findlen(freq));
  63. j++;
  64. }
  65. else
  66. {
  67.  
  68. freq[s[i]-'0']--;
  69. i++;
  70.  
  71. }
  72.  
  73.  
  74. }
  75. int val=0;
  76. max_length = max(max_length,findlen(freq));
  77. cout<<max_length<<endl;
  78. }
  79. }
  80.  
Success #stdin #stdout 0s 15232KB
stdin
6
12345354987
223344556677234
6456522
656523
656522
666666666666
stdout
6
12
2
4
6
12