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

하나의 최소 하위 문자열로 두 개의 하위 문자열을 찾는 C++ 코드

<시간/>

n개의 문자가 있는 소문자 문자열 S가 있다고 가정합니다. 우리는 −

와 같은 두 개의 비어 있지 않은 부분 문자열 P와 Q를 찾아야 합니다.
  • P와 Q는 모두 S의 부분수열입니다.

  • 각 인덱스 i에 대해 S[i]는 정확히 P와 Q 중 하나에 속합니다.

  • P는 사전순으로 가능한 한 최소입니다.

따라서 입력이 S ="thelightsaber"와 같으면 출력은 10이 됩니다. 2개의 rednotebook, 3개의 녹색 노트북 및 5개의 파란색 노트북이 필요하기 때문입니다.

단계

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

c := S
sort the array c
a := position of (c[0]) in S
delete c from S
print c[0] and S

예시

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

#include <bits/stdc++.h>
using namespace std;
void solve(string S){
   string c = S;
   sort(c.begin(), c.end());
   int a = S.find(c[0]);
   S.erase(S.begin() + a);
   cout << c[0] << ", " << S << endl;
}
int main(){
   string S = "thelightsaber";
   solve(S);
}

입력

"thelightsaber"

출력

a, thelightsber