这道题主要是思维想过来就好,一个序列的排列种类只与最前面相同元素的个数有关,如果一旦出现了不同的元素,你会发现之后的排列方式就固定了,前面有几个相同的元素就是2的几次幂,不要忘记边乘边取模就好
完整代码如下:
#include<iostream>
#include<string>
using namespace std;
const int mod = 1000000007;
int main(){
int t;
cin >> t;
while(t--){
long long ans = 1;
long long n;
string s;
cin >> n >> s;
for(int i=1;i<n;i++){
if(s[i] != s[i-1]) break;
ans *= 2;
ans = ans % mod;
}
cout << ans << endl;
}
return 0;
}