微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在C ++中用相对的字母小写字母替换字符串中的每个字母小写字母?

如何解决如何在C ++中用相对的字母小写字母替换字符串中的每个字母小写字母?

我想使用for循环找到相反的字母。另外,我想指出的是,我试图找到相反的字母。例如,将“ a”替换为“ z”,将“ b”替换为“ y” ...

例如,用户输入:“ 3 feg”,该程序的输出将是:“ uvt”。另外,我的约束是1

这是我的代码


    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        `int` user_input_number;
        string user_input_text;
    
        cout << "Type: ";
        cin >> user_input_number;
    
        cout << "Type: ";
        cin >> user_input_text;
    
        for(char i = 'a'; i <= 'z'; i++)
        {
         cout <<  << endl;
        }
        return 0;
    }
    
    
      

解决方法

这是一种使用ASCII算术的解决方案:

    string s = "abc";
    for(int i = 0; i < s.length(); i++){
        s[i] = 219 - s[i];
    }
    cout << s; // "zyx"

之所以起作用,是因为所有ASCII个字符都在0到127之间,这样值就可以循环返回

,
// Example program
#include <iostream>
#include <string>
#include <map>
using namespace std;

string encrypt(int n,string s) {
    map<char,int> alphabetMap = { };
    string alpha = "abcdefghijklmnopqrstuvwxyz";
    for (int i = 0; i < 26; i++){
        
        alphabetMap.insert({alpha[i],i});
        
    }
    string coded = "";
    for (int i  = 0; i < n; i++) {
        int index = alphabetMap[s[i]];
        coded += alpha[25 - index];
    }
    
    
    return coded;
}

int main()
{
    int n = 0;
    string s = "";
    cout << "Enter n and string: " ;
    cin >> n >> s;
    
    cout << encrypt(n,s) << endl;
    
    
}


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。