如何根據給定演算法解密字串?


解密或解密字串是用於保護機密和敏感資料免受駭客攻擊的過程。它將加密資料或文字轉換為其原始形式。加密是將純文字轉換為不可讀且難以理解的密文格式的過程,以便駭客無法理解它。這些過程是相互關聯的,並且涉及各種用於處理的演算法。我們將根據以下演算法解密字串。

  • 如果字串長度為奇數:對於奇數索引值,從字串的末尾追加字母;對於偶數索引值,從輸入加密字串的開頭追加字母。

  • 如果字串長度為偶數:對於奇數索引值,從字串的開頭追加字母;對於偶數索引值,從輸入加密字串的末尾追加字母。

演示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 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告