fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. const int Mod=998244353;
  5.  
  6. void solve() {
  7. int n;
  8. cin >> n;
  9. string s;
  10. cin >> s;
  11. if(n==1){
  12. cout << ((s[0]=='1')?2:1) << '\n';
  13. return;
  14. }
  15. int T01=0,T10=0;
  16. int ans=(s[0]=='1')?2:1;
  17.  
  18. for(int i=0;i<n-1;i++){
  19. if(s[i]=='0' && s[i+1]=='1') T01++;
  20. if(s[i]=='1' && s[i+1]=='0') T10++;
  21. }
  22.  
  23. int trans=T01+T10;
  24.  
  25. int swap=0;
  26. if(T01>=2 || T10>=2 || (s[0]=='1' && T01>=1))
  27. swap=2;
  28.  
  29. if(swap==0){
  30. for(int i=0;i<n-1;i++){
  31. if(s[i]!=s[i+1] && s[i]==s[n-1]){
  32. swap=1;
  33. break;}
  34. }
  35. if(s[0]=='1' && s[n-1]=='0') swap=1;
  36. }
  37. ans+=n+trans-swap;
  38.  
  39. cout << ans-1 << '\n';
  40.  
  41. }
  42.  
  43. int main(){
  44. ios::sync_with_stdio(false);
  45. cin.tie(nullptr);
  46.  
  47. int t;
  48. cin >> t;
  49. while (t--) solve();
  50.  
  51.  
  52. return 0;
  53. }
  54.  
Success #stdin #stdout 0.01s 5288KB
stdin
6
3
000
3
111
3
011
3
100
5
10101
19
1101010010011011100
stdout
3
4
4
4
8
29