>  기사  >  백엔드 개발  >  C 프로그램에서 문자열의 영숫자 약어는 무엇입니까?

C 프로그램에서 문자열의 영숫자 약어는 무엇입니까?

王林
王林앞으로
2023-09-14 22:25:03756검색

C 프로그램에서 문자열의 영숫자 약어는 무엇입니까?

여기서 주어진 문자열의 영숫자 약어와 관련된 흥미로운 질문을 볼 수 있습니다. 문자열 길이가 10보다 작습니다. 모든 영숫자 약어를 인쇄해 드립니다.

영숫자 약어는 문자와 숫자의 혼합으로 구성됩니다. 이 숫자의 값은 생략된 문자의 수입니다. 생략된 부분 문자열은 얼마든지 있을 수 있습니다. 두 개의 하위 문자열이 인접하지 않습니다. 이 개념을 얻기 위한 알고리즘을 살펴보겠습니다.

Algorithm

printAbbreviation(s, index, max, 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

Example

#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);
}

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

위 내용은 C 프로그램에서 문자열의 영숫자 약어는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제