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

이진 문자열에서 "01" 또는 "10"을 삭제하여 C++에서 "01" 또는 "10"을 제거하시겠습니까?

<시간/>

먼저 초기 문자열을 선언하고 길이를 계산하여 deleteSubstr(str,length) 함수에 전달하겠습니다.

string str = "01010110011";
int length = str.length();
cout <<"Count of substring deletion"<< deleteSubstr(str, length);

deleteSubstr(string str, int length) 함수 내부에서 for 루프는 I가 길이보다 작아질 때까지 실행되고 각각 0과 1이 만날 때 count_0 및 count_1 변수를 증가시킵니다. 그런 다음 함수는 count_0 및 count_1의 최소값을 반환합니다.

int deleteSubstr(string str, int length){
   int count_0 = 0, count_1 = 0;
   for (int i = 0; i < length; i++) {
      if (str[i] == '0')
         count_0++;
      else
         count_1++;
   }
   return min(count_0, count_1);
}

예시

"01" 또는 "10"을 제거하기 위해 이진 문자열에서 "01" 또는 "10"을 삭제하는 다음 구현을 살펴보겠습니다.

#include <iostream>
using namespace std;
int deleteSubstr(string str, int length){
   int count_0 = 0, count_1 = 0;
   for (int i = 0; i < length; i++) {
      if (str[i] == '0')
         count_0++;
      else
         count_1++;
   }
   return min(count_0, count_1);
}
int main(){
   string str = "01010110011";
   int length = str.length();
   cout <<"Count of substring deletion "<< deleteSubstr(str, length);
   return 0;
}

출력

위의 코드는 다음 출력을 생성합니다 -

Count of substring deletion 5