문자열 str1을 입력으로 제공합니다. 목표는 입력 문자열의 동일한 문자 쌍 사이에 "*"를 삽입하고 재귀 메서드를 사용하여 결과 문자열을 반환하는 것입니다.
입력 문자열이 str1 = "wellness"인 경우 출력은 "wel*lnes*s"
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 + '*' + 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; }
위 코드를 실행하면 다음과 같은 출력이 생성됩니다
String after adding * : a*ab*bc*c*cd*d*d*d
위 내용은 C++에서 동일한 문자 쌍 사이에 별표를 삽입하는 재귀 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!