>백엔드 개발 >C++ >C++에서 동일한 문자 쌍 사이에 별표를 삽입하는 재귀 프로그램

C++에서 동일한 문자 쌍 사이에 별표를 삽입하는 재귀 프로그램

WBOY
WBOY앞으로
2023-09-04 12:57:131428검색

C++에서 동일한 문자 쌍 사이에 별표를 삽입하는 재귀 프로그램

문자열 str1을 입력으로 제공합니다. 목표는 입력 문자열의 동일한 문자 쌍 사이에 "*"를 삽입하고 재귀 메서드를 사용하여 결과 문자열을 반환하는 것입니다.

입력 문자열이 str1 = "wellness"인 경우 출력은 "wel*lnes*s"

Example

Input - str1 = "happiness"

Output - 추가 * 결과 문자열: hap*pines*s

Explanation - pp와 ss 사이에 *를 추가하면 결과 문자열 hap*pines*s

Enter - str1 = "swimmmmingggg pooool"

Output - *를 추가한 후의 문자열: swim*m*m*ming*g*g*g po*o*o*ol

설명 - mm, gg 및 oo 사이에 *를 추가하면 문자열 swim* m*m*ming*g*g*g po*o*o*ol

다음 프로그램에서 사용한 방법은 다음과 같습니다

이 방법에서는 문자열 str1을 사용합니다. 각 반복에서 str1은 현재 인덱스를 중간점으로 하여 두 부분으로 나뉩니다. 첫 번째 하위 문자열의 마지막 문자가 다음 하위 문자열의 첫 번째 문자와 동일한 경우 원래 문자열은 하위 문자열 1, "*", 하위 문자열 2로 설정됩니다. 부분 문자열 2의 길이가 0이면 재귀가 종료됩니다.

  • 입력 문자열을 str1로 가져와 길이를 len으로 계산합니다.

  • 함수 addStar(string& s1, int i, int len1)는 s1, 길이 및 현재 인덱스를 입력으로 받아들이고 두 문자 쌍이 동일할 때 *를 추가합니다.

  • tmp1을 인덱스 0에서 i까지의 하위 문자열로 가져옵니다.

  • 인덱스 i에서 len1+1까지의 하위 문자열로 tmp2를 가져옵니다.

  • tmp1의 마지막 문자가 tmp2의 첫 번째 문자와 같으면 s1=tmp1+'*'+tmp2를 설정합니다.

  • 다음 반복을 위해 addStar(s1, i+1, len1)을 호출하세요.

  • 마지막으로 주 함수에서 str1을 인쇄합니다.

#include <iostream>
using namespace std;
void addStar(string& s1, int i, int len1){
   string tmp1=s1.substr(0,i);
   string tmp2=s1.substr(i,len1+1);
   if (tmp2.length() == 0){
      return;
   }
   if (tmp1[i-1] == tmp2[0]){
      s1 = tmp1 + &#39;*&#39; + tmp2;
   }
   addStar(s1, i+1, len1);
}
int main(){
   string str1 = "aabbcccdddd";
   int len=str1.length();
   addStar(str1, 0, len-1);
   cout << "String after adding * : "<<str1 << endl;
   return 0;
}

Output

위 코드를 실행하면 다음과 같은 출력이 생성됩니다

String after adding * : a*ab*bc*c*cd*d*d*d

위 내용은 C++에서 동일한 문자 쌍 사이에 별표를 삽입하는 재귀 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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