Rumah > Artikel > pembangunan bahagian belakang > 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.
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
#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() - '0'); //count the integer value of that digit str.pop_back(); //remove last character } } char to_char = (char)(count + '0'); //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); }
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
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!