Apakah singkatan alfanumerik untuk rentetan dalam program C?

王林
Lepaskan: 2023-09-14 22:25:03
ke hadapan
747 orang telah melayarinya

Apakah singkatan alfanumerik untuk rentetan dalam program C?

Di sini kita akan melihat soalan menarik berkaitan dengan singkatan alfanumerik rentetan yang diberikan. Panjang tali kurang daripada 10. Kami akan mencetak semua singkatan alfanumerik.

Singkatan abjad angka dibentuk oleh campuran aksara dan nombor. Nilai nombor ini ialah bilangan aksara yang telah ditinggalkan. Mungkin terdapat sebarang bilangan subrentetan yang ditinggalkan. Tiada dua subrentetan bersebelahan. Mari kita lihat algoritma untuk mendapatkan konsep ini.

Algoritma

cetakan Singkatan(s, indeks, maks, str) −

begin
   if index is same as max, then
      print str
   end if
   add s[index] at the last of str
   printAbbreviation(s, index + 1, max, str)
   delete last character from str
   count := 1
   if str is not empty, then
      if the last character of str is a digit, then
         add last digit with the count value
         delete last character from str
      end if
   end if
   add count after the str
   printAbbreveation(s, index + 1, max, str)
end
Salin selepas log masuk

Contoh

#include <iostream>
using namespace std;
void printAbbreviation(const string& s, int index, int max_index, string str) {
   if (index == max_index) { //if string has ended
      cout << str << endl;
      return;
   }
   str.push_back(s[index]); // push the current character to result
   printAbbreviation(s, index + 1, max_index, str); //print from next index
   str.pop_back(); //remove last character
   int count = 1;
   if (!str.empty()) {
      if (isdigit(str.back())) { //if the last one is digit, then
         count += (int)(str.back() - &#39;0&#39;); //count the integer value of that digit
         str.pop_back(); //remove last character
      }
   }
   char to_char = (char)(count + &#39;0&#39;); //make count to character
   str.push_back(to_char);
   printAbbreviation(s, index + 1, max_index, str); //do for next index
}
void printCombination(string str) {
   if (!str.length()) //if the string is empty
      return;
   string str_res;
   printAbbreviation(str, 0, str.length(), str_res);
}
int main() {
   string str = "HELLO";
   printCombination(str);
}
Salin selepas log masuk

Output

HELLO
HELL1
HEL1O
HEL2
HE1LO
HE1L1
HE2O
HE3
H1LLO
H1LL1
H1L1O
H1L2
H2LO
H2L1
H3O
H4
1ELLO
1ELL1
1EL1O
1EL2
1E1LO
1E1L1
1E2O
1E3
2LLO
2LL1
2L1O
2L2
3LO
3L1
4O
5
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah singkatan alfanumerik untuk rentetan dalam program C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!