题解 | #密码破译#

密码破译

https://www.nowcoder.com/practice/7a69307e123447c78d948373cdce1745

使用深度优先搜索,寻找过程中不采用以0开头的数字。

#include <iostream>
#include <vector>
#include <string>
using namespace std;
char digitToChar(int digit){
    return 'a'+(digit-1);
}
void backtrack(string& num, int index, string current, vector<string>& result) {
    // 如果已经处理完所有的数字,并且当前数字串合法,则添加到结果中
    if (index == num.size()) {
        if (current != "") {
            result.push_back(current);
        }
        return;
    }

    for (int i = index; i < num.size()&&i<=index+2; ++i) {
        string substr = num.substr(index, i - index + 1);
        // 检查数字串是否合法
        if (stoi(substr) > 0 && stoi(substr) <= 26 && substr[0]!='0') {
            backtrack(num, i + 1, current + digitToChar(stoi(substr)), result);
        }
    }
}

vector<string> splitNumber(string& num) {
    vector<string> result;
    backtrack(num, 0, "", result);
    return result;
}

int main() {
    string number;
    while (getline(cin,number)) {
        vector<string> result = splitNumber(number);
        for (const auto& str : result) {
            cout << str << " ";
        }
        cout << endl;
    }
    return 0;
}
#23届找工作求助阵地##牛客创作赏金赛#
全部评论

相关推荐

11-29 11:21
门头沟学院 Java
总包48.5w,意想不到的价格
想开了的垂耳兔很喜欢拱白菜:转人工
点赞 评论 收藏
分享
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务