【牛客网】字符串计数

题目描述

求字典序在s1和s2之间的,长度在len1到len2之间的字符串个数,结果 mod 1000007.

输入描述

每组数据包涵s1(长度小于100),s2(长度小于100),len1(小于100000),len2(大于len1,小于100000)

解题思路

算出两个字符串各自每位s[i]-'a’的值,得出总的字典序和Count,然后Count(s2)-Count(s1)-1

#include <iostream>
using namespace std;

int Count(string s)
{
    int ret = 0;
    for(int i = 0; i < s.size(); i++) {
    //排列组合,每位都有26种搭配,所以每次都要乘26
        ret = ret * 26 + s[i] - 'a';
    }
    return ret;
}

int main()
{
    string s1, s2;
    int len1, len2;
    while(cin >> s1 >> s2 >> len1 >>len2) {
        cout << (Count(s2) - Count(s1) - 1) % 1000007 << endl;
    }
    return 0;
}