首頁 > 後端開發 > C++ > 透過刪除重複出現的字元來解碼給定的字串

透過刪除重複出現的字元來解碼給定的字串

PHPz
發布: 2023-08-25 21:29:06
轉載
1280 人瀏覽過

透過刪除重複出現的字元來解碼給定的字串

本文的目的是透過刪除重複出現的字元來實現解碼給定字串的程式。

就像您知道什麼是字串一樣,字串只不過是字元的集合。此外,字串中字元的重複次數沒有限制。一個字串中相同的字元可以出現多次。在本文中,我們將找到一種透過刪除重複出現來解碼給定編碼字串 str 的方法。

目標是解碼提供的字串str,字串已經使用'a'出現一次,'b'出現兩次,'c'出現三次,'d'出現四次,一直到'z'出現26次進行編碼。

問題陳述

透過刪除重複的出現來實現對給定字串進行解碼的程式。

注意 − 不要忽略信件中可能包含的空格。

範例範例1

Let us take the input string str = “abbbb accc”
登入後複製
The output obtained is: abb ac
登入後複製

Explanation

的翻譯為:

解釋

每個字母都是根據它在英文字母表中出現的次數來書寫的。結果字串為"abb acc",因為這裡字母b重複了四次。字母a重複了兩次,最後字母c重複了三次。

同樣在這種情況下,空格也不會被忽略。

範例 2

Let us take the input string str = “ddddadddd”
登入後複製
The output obtained is: dad
登入後複製

Explanation

的翻譯為:

解釋

每個字母都是根據它在英文字母表中出現的次數來書寫的。結果字串是“dad”,因為這裡字母d重複了八次,最後字母a只出現了一次。

在這種情況下,字元之間沒有空格。

範例 3

Let us take the input string str = “abbccc”
登入後複製
The output obtained is: abc
登入後複製

Explanation

的翻譯為:

解釋

每個字母的書寫都會考慮到它在英文字母表中出現的次數。結果字串是“abc”,因為這裡字母 a 只出現了一次。字母 b 重複了兩次,最後字母 c 重複了 3 次。

在這種情況下,字元之間沒有空格。

方法

為了透過刪除重複出現的字元來解碼給定的字串,我們在本文中採用以下方法。

解決此問題並透過刪除重複出現來解碼給定字串的方法基於迭代字串。

也就是說,可以透過迭代字串 str 並將每個字元推入輸出字串,然後向前移動該位置以查找下一個字元來解決上述問題。

演算法

下面給出了列印給定字串中出現的駝峰式字元數量的演算法

為了解決這個問題,請遵循下面列出的指示 -

  • 第一步 − 開始

  • 第 2 步 - 定義字串

  • 第 3 步 - 建立一個名為 result 的變量,其初始值為空字串來儲存輸出字串。

  • 第 4 步 - 建立函數 findOccurences(char a1) 並執行後續操作 -

  • 步驟 5 - 如果 a1 的值落在 a 和 z 之間,則將 a1 的值傳回為「a」。 如果 a1 的值範圍不是 A 到 Z,則將 a1 的值傳回為「Z」。 如果不是,則回傳0。

  • 步驟6 - 定義函數decodeTheString(string s)來解碼字串s

  • #第7步 - 在完成上述階段後,將字串結果列印為最終字串。

  • 第8步 − 停止

#範例:C 程式

這是C 程式實作上述編寫的演算法,透過刪除重複出現的字元來解碼給定的字串

// C++ program for our above algorithm
#include <bits/stdc++.h>
using namespace std;

// Function to count the number of  occurences of each character
int findOccurences(char a1){

   // If the character is a lower case , that is [a-z]
   if (a1 <= 'z' && a1 >= 'a') {
      return a1 - 'a';
   }
   
   // If the character is an uppercase, that is [A-Z]
   else if (a1 <= 'Z' && a1 >= 'A') {
      return a1 - 'A';
   }
   
   // If the character is something else  like a punctuation mark then
   return 0;
}

// Function used for decoding the given string str
void decodeTheString(string s){
   string result = "";
   
   // Iterate through the provided string str
   for (int i = 0; i < s.length(); i++) {
      result.push_back(s[i]);
      
      // Find the index i of the next characterto be printed
      i += findOccurences(s[i]);
   }
   cout << "The decoded string: " << result << endl;
}
int main(){
   string s = "aaabbbb";
   cout << "Input string: "<< s << endl;
   decodeTheString(s);
   return 0;
}
登入後複製

輸出

Input string: aaabbbb
The decoded string: aaabb
登入後複製

結論

同樣,我們可以透過刪除重複出現的任何給定字串來解碼它。

本文解決了透過刪除重複出現的任何給定字串來解碼該字串的挑戰。這裡提供了 C 程式碼以及透過刪除重複出現的任何給定字串來解碼該字串的演算法。

以上是透過刪除重複出現的字元來解碼給定的字串的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板