Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

길이가 최대 k인 회문 하위 문자열이 있는 문자열을 찾는 C++ 프로그램

<시간/>

두 개의 숫자 n과 k가 있다고 가정합니다. 세 가지 유형의 문자 'a', 'b' 및 'c'만 사용하여 문자열 S를 생성하려고 합니다. k를 초과하지 않는 회문인 문자열 S의 부분 문자열의 최대 길이입니다.

따라서 입력이 n =3과 같으면; k =2이면 출력은 "aab"가 됩니다. 길이가 3이고 회문 부분 문자열이 길이가 2 이상인 "aa"이기 때문입니다. (다른 답변도 가능합니다.)

단계

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

S := a blank string
j := 0
for initialize i := 0, when i < n, update (increase i by 1), do:
   S := S concatenate (j + ASCII of 'a') as character
   j := (j + 1) mod 3
return S

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <bits/stdc++.h>
using namespace std;

string solve(int n, int k) {
   string S = "";
   int j = 0;
   for (int i = 0; i < n; i++) {
      S += j + 'a';
      j = (j + 1) % 3;
   }
   return S;
}
int main() {
   int n = 3;
   int k = 2;
   cout << solve(n, k) << endl;
}

입력

3, 2

출력

abc