题解——密码翻译

发布于 28 天前  64 次阅读


题目地址
看完题之后,你可能会想,这道题不是很好做吗。
阿确实很好做,但是我们要用一个高级的方法做这道题
首先我们来看标准库中的transform函数

template<typename _InputIterator, typename _OutputIterator, typename _UnaryOperation>
_OutputIterator transform(_InputIterator __first, _InputIterator __last, _OutputIterator __result, _UnaryOperation __unary_op)

这个东西其实本质上就是一个可修改值for-each_UnaryOperation __unary_op是一个fn(type)->type函数。
也就是说,只要我们用这个玩意就可以对字符串中的每个字符进行处理

剩下的就很好理解了

代码:

#include <bits/stdc++.h>
#include <cctype>
using namespace std;
char dis(char c)
{
    if (isalpha(c))
    {
        if(c == 'z') return 'a';
        else if(c == 'Z') return 'A'; 
        return c += 1;
    }
    else
    {
        return c;
    }
}
static string encode(string source)
{
    std::transform(source.begin(), source.end(), source.begin(), [](unsigned char c)
                   { return dis(c); });
    return source;
}
int main()
{
    string str;
    getline(cin, str);
    cout << encode(str);
}

大傻子一个