字符串字典序个数问题
问题:两个字符串a和b长度相同(只包含小写字母),长度为m,求字典序在a和b之间(包括a和b本身)长度为m 的字符串的个数。
例如,aa 到az之间存在26个字符串;aa 到ba则有27个字符串但我下面的代码的输出结果是错的,搞不清楚我的逻辑到底哪里错了。例如当a="kcnmi ";b="lgtqj"正确结果应该是531440,但我的结果是531442
C++代码:
string a="xxxx" ;
string b ="xxxx" ;
long long res =0 ;
reverse(a.begin (),a.end ()) ;
reverse(b.begin (),b.end ()) ;//为了循环方便把字符串给反转了
for(int i=0 ;i<m ;++i)
{
int gap = b[i]-a[i] ;
res+= pow(26,i)*gap ;
}
cout<<res+1<<endl ;//输出答案,因为最后一个字符就算相等也作为一种,所以加1
reverse(a.begin (),a.end ()) ;
reverse(b.begin (),b.end ()) ;//为了循环方便把字符串给反转了
for(int i=0 ;i<m ;++i)
{
int gap = b[i]-a[i] ;
res+= pow(26,i)*gap ;
}
cout<<res+1<<endl ;//输出答案,因为最后一个字符就算相等也作为一种,所以加1