题解 | #字符串加密#

字符串加密

https://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3

#include <cctype>
#include <iostream>
#include <string>
using namespace std;

string build_key(const string& key) {
    string chars = "abcdefghijklmnopqrstuvwxyz";
    string mapping(chars);
    size_t index = 0;
    for (auto c : key) {
        int i = c - 'a';
        if (chars[i] != '0') {
            chars[i] = '0';
            mapping[index++] = c;
        }
    }
    for (auto c : chars) {
        if (c != '0') {
            mapping[index++] = c;
        }
    }
    return mapping;
}

string encrypt(const string& key, const string& text)
{
    string data(text);
    for (size_t i = 0; i < data.size(); ++i) {
        auto upper = isupper(data[i]);
        auto index = data[i] - (upper ? 'A' : 'a');
        data[i] = upper ? (key[index] - 'a' + 'A') : key[index];
    }
    return data;
}

int main() {
    string text, key;
    while (cin >> key >> text) {
        key = build_key(key);
        text = encrypt(key, text);
        cout << text << endl;
    }
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务