样例过了。
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e6+100,mod=1e9+7;
int dp[N],last[N];
int main()
{
int t;
cin>>t;
while(t--)
{
memset(dp,0,sizeof dp);
memset(last,0,sizeof last);
char s[N];
cin>>s+1;
int len=strlen(s+1);
for(int i=1;i<=len;i++)
{
if(!last[s[i]])
{
dp[i]=dp[i-1]*2+1;
}
else
{
dp[i]=dp[i-1]*2-dp[last[s[i]]-1];
}
last[s[i]]=i;
dp[i]=(dp[i]+mod)%mod;
}
cout<<dp[len]+1<<endl;
}
return 0;
}