fork download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. char s[1001];
  6. int length;
  7. int ans[1000];
  8.  
  9. int findVal(int i, int l){
  10. if(l == 2)
  11. if(s[i] == s[i+1]) return 2;
  12. else return 0;
  13. else{
  14. int val = (s[i] == s[i+1]) + (s[i] == s[i+2]) + (s[i+2] == s[i+1]);
  15. if(val == 3) return 2;
  16. else if(val == 1) return 1;
  17. }
  18. return 0;
  19. }
  20.  
  21. void initialize(){
  22. memset(ans,0,sizeof(ans));
  23. ans[1] = findVal(0,2);
  24. ans[2] = findVal(0,3);
  25. ans[3] = ans[1] + findVal(2,2);
  26. }
  27.  
  28. void solve(){
  29. for(int i = 4; i < length; i++){
  30. ans[i] = max(ans[i-2]+findVal(i-1,2),ans[i-3]+findVal(i-2,3));
  31. }
  32. }
  33.  
  34. int main(){
  35. int t;
  36. cin >> t;
  37. while(t--){
  38. cin >> s;
  39. length = strlen(s);
  40. initialize();
  41. solve();
  42. cout << ans[length-1] << endl;
  43. }
  44. }
  45.  
Success #stdin #stdout 0s 2732KB
stdin
17
123123123
7777777
33334
33433
334433
343434
234432
545455445544554444455555544
1233232322233223332223
123123121232232223232334321
332322232322
2222
231
2222
223
22
3121
stdout
0
6
3
3
6
2
2
22
13
7
8
4
0
4
1
2
0