> 백엔드 개발 > C++ > 본문

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

WBOY
풀어 주다: 2023-09-04 12:57:13
앞으로
1426명이 탐색했습니다.

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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿