阿里笔试第一题
阿里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;
}