如何根据给定算法解密字符串?


解密或解密字符串是用于保护机密和敏感数据免受黑客攻击的过程。它将加密数据或文本转换为其原始形式。加密是将纯文本转换为不可读且难以理解的密文格式的过程,以便黑客无法理解它。这些过程是相互关联的,并且涉及各种用于处理的算法。我们将根据以下算法解密字符串。

  • 如果字符串长度为奇数:对于奇数索引值,从字符串的末尾追加字母;对于偶数索引值,从输入加密字符串的开头追加字母。

  • 如果字符串长度为偶数:对于奇数索引值,从字符串的开头追加字母;对于偶数索引值,从输入加密字符串的末尾追加字母。

演示1

Input = Encrypted string = "olhel"
Output = hello

解释

首先找到字符串的长度来解密输入字符串。以相反的顺序添加字母。字符串长度为5(奇数),因此,对于奇数索引值,我们从后面添加字母,对于偶数索引值,我们按照以下方式从前面追加字母。每次添加字母后,移到下一个字母。

  • 索引值为1的字母是“o”。将“o”添加到结果字符串中。结果是“o”。

  • 索引值为2的字母是“l”。将“l”添加到结果字符串中。结果是“lo”。

  • 索引值为3的字母是“h”。将“l”添加到结果字符串中。结果是“llo”。

  • 索引值为4的字母是“e”。将“e”添加到结果字符串中。结果是“ello”。

  • 索引值为5的字母是“l”。将“h”添加到结果字符串中。结果是“hello”。

演示2

Input = Encrypted string = "flie"
Output = life

解释

使用该算法解密输入字符串,首先找到字符串的长度。以相反的顺序添加字母。字符串长度为4(偶数),因此,对于奇数索引值,我们从前面添加字母,对于偶数索引值,按照以下方式从后面追加字母。每次添加字母后,移到下一个字母。

  • 索引值为1的字母是“f”。将“e”添加到结果字符串中。结果是“e”。

  • 索引值为2的字母是“l”。将“f”添加到结果字符串中。结果是“fe”。

  • 索引值为3的字母是“i”。将“i”添加到结果字符串中。结果是“ife”。

  • 索引值为4的字母是“e”。将“l”添加到结果字符串中。结果是“life”。

C++库函数

  • length() − 这是字符串类库函数,在<string>头文件中定义。它以字节形式返回输入字符串的长度。它计算字符串的总字符数。

string_name.length();
  • size() − 这是C++库中预定义的函数,它返回输入字符串的长度。

string_name.size();
  • reverse() − 它在C++标准库中定义。它通过考虑字符串的起始和结束位置来反转字符串的顺序。它需要两个参数:起始索引值和结束索引值。

reverse(string_name.begin(), string_name.end());

算法

  • 获取使用上述加密规则加密的加密字符串。

  • 以相反的顺序将字母插入结果字符串。

  • 使用'for'循环遍历字符串。

  • 使用length()函数查找字符串的长度。

    • 如果输入字符串的长度为偶数:对于奇数位置的值,从前面添加字符;对于偶数位置的值,从输入加密字符串的后面添加字符。

    • 如果输入字符串的长度为奇数:对于奇数位置的值,从输入字符串的后面添加字符;对于偶数位置的值,从加密字符串的前面添加字符。

  • 打印解密后的结果字符串。

示例

通过获取字符串作为输入来实现本教程中的问题陈述。通过考虑上述规则来解密输入字符串。反转最终字符串以获得所需输出。

#include <bits/stdc++.h>
using namespace std;
string decryptedString(string str, int len) { 
   string result = "";
   if (len % 2)  {
      int cntVar = 0; int start = 0, last = len - 1;
      while (result.size() != len) {  
         if (cntVar % 2 == 0)
            result += str[start++];
         else
            result += str[last--];
         cntVar++;
      }
   } else {
      int cntVar = 0; int start = 0, last = len - 1;
      while (result.size() != len) {
         if (cntVar % 2 == 0)
            result += str[last--];
         else
            result += str[start++];
         cntVar++;
      }
   }
   reverse(result.begin(), result.end());
   return result;
}
int main() {  
   string str = "flie";
   int len = str.length();
   cout << "The decrypt string according to the following algorithm is : " << decryptedString(str, len);
   return 0;
}

输出

The decrypt string according to the following algorithm is : life

结论

在本教程结束时,我们使用算法来解密字符串。定义解密字符串的规则或算法。我们使用C++和reverse()函数来反转结果字符串实现了该方法。教程中解释了一些演示,以详细说明任务的含义和解决方案。

更新于:2023年10月3日

158 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.