이 튜토리얼에서는 주어진 이진 문자열의 모든 1과 0을 두 부분으로 나누어야 합니다. 여기서는 주어진 문자열에서 하위 문자열을 가져와 이를 뒤집어 0과 1의 다른 부분을 분리해야 합니다. 궁극적으로 우리는 부분 문자열이 1과 0을 반으로 나누는 데 필요한 총 반전 횟수를 계산해야 합니다.
문제 설명 - 짝수 길이의 이진 문자열이 제공됩니다. 주어진 문자열에서 부분 문자열을 여러 번 가져와서 뒤집어 두 부분으로 나누어야 합니다. 마지막에 필요한 반전의 총 개수를 인쇄해야 합니다.
문자열이 반으로 나뉘기 때문에 반전이 0번 필요합니다.
으아악 으아악먼저 5번째 인덱스부터 길이가 2인 부분 문자열을 가져와서 역으로 바꿔보세요. 결과 문자열은 0011110000이 됩니다.
이후 길이 6의 문자열을 처음부터 가져와서 뒤집어 보세요. 결과 문자열은 1111000000
첫 번째 인덱스부터 시작하여 길이가 2인 문자열을 뒤집습니다. 결과 문자열은 001101이 됩니다.
이제 두 번째 인덱스부터 길이가 3인 문자열을 뒤집어 보겠습니다. 최종 문자열은 000111입니다.
이 방법은 고유한 인접 요소의 총 개수를 계산합니다. 그 후에 필요한 총 반전 횟수는 count / 2라고 말할 수 있습니다.
샘플 입력을 디버깅하여 이해해 봅시다.
으아악그러므로 서로 다른 인접 요소의 총 개수는 4개입니다. 여기서는 str[1] != str[2], str[4] != str[5], str[5] != str[6] 및 str[6] != str[7]입니다.
즉, count 값은 4이고 답은 count/2, 즉 2입니다.
1단계 - "cnt" 변수를 0으로 초기화합니다.
2단계 - for 루프를 사용하고 문자열을 반복합니다.
3단계 − for 루프에서 현재 요소가 이전 요소와 같지 않으면 'cnt' 변수의 값을 1만큼 늘립니다.
4단계 − 'cnt' 값이 홀수이면 (cnt -1) /2를 반환합니다. 그렇지 않으면 cnt/2를 반환합니다.
시간 복잡도 - 문자열을 반복하므로 O(N)입니다.
공간 복잡도 - O(N) 왜냐하면 개수를 저장하기 위해 일정한 공간을 사용하기 때문입니다.
여기에서는 두 개의 서로 다른 인접한 요소가 발견될 때마다 반전되어야 하는 논리를 사용했습니다. 또한 단일 역방향 연산으로 두 개의 요소를 설정할 수 있으므로 결과 값으로 count/2를 반환합니다.
위 내용은 이진 문자열의 1과 0을 서로 다른 절반으로 분리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!