阿里笔试第一题
阿里Android第一题
#笔试题目##阿里巴巴#
问题:两个字符串a和b长度相同(只包含小写字母),长度为m,求字典序在a和b之间(不包括a和b本身)长度为m 的字符串的个数。
测试用例
4
1 z a
1 a z
2 az bb
3 bbb bbb
输出
0
24
1
0
例如,aa 到az之间存在24个字符串;aa 到ba则有25个字符串
其实这题很简单 只不过思路要转换一下
你可以化为数字序456和123之间有多少个数字的问题
而使用字母去代替数字 那么只不过是10进制变成26进制
比如abc和def之间有多少个字典序字符串 就和123到456之间有多少个数字一样
那么我只要将adb和def之间的差值找到就可以知道他们之间有多少个符合条件的字符串
例如当a=" kcnmi ";b=" lgtqj"
结果是531440
// 本题为考试多行输入输出规范示例,无需提交,不计分。 #include <iostream> #include <cstdio> using namespace std; int main() { int count = 1; int len = 0; string str1, str2; cin >> count; int sum = 0; for (int i = 0; i< count; i++) { for (int j = 0; j < count; j++) { cin >> len; cin >> str1; cin >> str2; int* foo = new int[len]; for (int i = 0; i < len; i++) { foo[i] = str2[i] - str1[i]; } for (int i = 0; i < len; i++) { sum += foo[i] * pow(26, len - i - 1); } cout << endl; if (sum >= 1) { cout << sum - 1; } else { cout << 0; } } } return 0; }