qishou 广东海洋大学·2022届
APP 内打开
分享
4
93

阿里笔试第一题

阿里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

复制代码123456789101112131415161718192021222324252627282930313233343536// 本题为考试多行输入输出规范示例,无需提交,不计分。#include #include  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;}

发布时间:2020年07月15日
用户头像
我来说两句…
共 4 条评论
天然呆 华中师范大学·2022届
老哥,这AC100了么,我相同的思路,AC30
2020年10月22日 回复
林简明 北京林业大学·2022届
可以可以
2020年10月23日 回复
之之翼 市场/亚马逊网
我先保存一波
2020年10月23日 回复
妄我深拥 兰州大学·2022届
谢谢分享呀呀呀!!!
2020年10月23日 回复