>  기사  >  백엔드 개발  >  두 번째 비트를 반복적으로 교체하여 이진 문자열을 동일하게 만듭니다.

두 번째 비트를 반복적으로 교체하여 이진 문자열을 동일하게 만듭니다.

WBOY
WBOY앞으로
2023-09-17 19:41:10648검색

두 번째 비트를 반복적으로 교체하여 이진 문자열을 동일하게 만듭니다.

이 문제에서는 bin1 문자열의 두 번째 문자를 첫 번째와 두 번째 문자 중 최소값 또는 최대값으로 대체하여 bin1 문자열을 bin2 문자열로 변환하고 첫 번째 문자를 삭제해야 합니다.

첫 번째 문자를 삭제해야 하므로 두 문자열의 마지막 len2 − 1 문자가 동일한지 확인해야 합니다. 또한 bin1 문자열의 시작 문자에 대해 지정된 작업을 수행하여 두 번째 문자열의 첫 번째 문자를 얻을 수 있는지 확인해야 합니다.

문제 설명 - 길이가 각각 len1과 len2인 bin1과 bin2 바이너리 문자열이 제공됩니다. 다음 작업을 통해 bin1 문자열을 bin2 문자열로 변환할 수 있는지 확인해야 합니다.

  • bin1 문자열의 첫 번째 및 두 번째 문자의 최소값 또는 최대값을 사용하여 bin1 문자열의 두 번째 문자를 업데이트합니다.

  • bin1 문자열의 첫 번째 문자를 제거하면 문자열 크기가 매번 1씩 줄어듭니다.

들어가세요

으아아아

출력

으아아아

지침- bin1 문자열을 bin2 문자열로 변환하려면 다음을 수행할 수 있습니다.

  • 두 번째 문자를 min(0,1)로 바꾸고 첫 번째 문자를 삭제할 수 있습니다. 따라서 문자열은 001011이 됩니다.

  • 다시 동일한 작업을 수행하면 문자열이 01011이 됩니다.

  • 다음 몇 가지 작업에서 문자열은 각각 0011과 011이 됩니다.

들어가세요

으아아아

출력

으아아아

Explanation - 주어진 문자열은 이미 동일합니다.

들어가세요

으아아아

출력

으아아아

설명 - 주어진 작업을 수행하여 bin1 문자열을 bin2 문자열로 변환할 수 없습니다.

방법 1

bin1 문자열의 길이가 더 작으면 bin2 문자열로 변환할 수 없습니다.

다른 경우에는 bin1 문자열의 마지막 len2 − 1 문자는 아무런 작업도 수행하지 않기 때문에 변경되지 않은 채로 유지됩니다. 따라서 두 문자열의 마지막 len2 − 1 문자는 동일해야 합니다.

또한 bin2 문자열의 첫 번째 문자가 '0'인 경우 bin1 문자열의 시작 문자를 min()해야 하며 '0'이 하나 이상 포함되어야 합니다.

bin2 문자열의 첫 번째 문자가 '1'인 경우 bin2 문자열의 시작 문자에 대해 max() 연산을 수행해야 하며, '1'이 하나 이상 포함되어야 합니다.

알고리즘

1단계 - bin1의 길이가 bin2 문자열의 길이보다 작으면 false를 반환합니다.

2단계 - 두 번째 위치부터 bin2 문자열을 탐색합니다.

3단계 - bin2[p]가 bin1[p + len1 - len2]와 같지 않으면 마지막 len2 -1 문자가 동일하지 않기 때문에 false를 반환합니다.

4단계 - 첫 번째 len1 - len2 + 1 문자를 탐색하고 bin2[0] 문자가 포함되어 있는지 확인합니다. 그렇다면 true를 반환합니다.

5단계 - 함수가 끝나면 false를 반환합니다.

으아아아

출력

으아아아

시간 복잡도 - 문자열 문자와 일치하는 O(N)입니다.

공간 복잡성 - 동적 공간을 사용하지 않으므로 O(1)입니다.

우리는 주어진 연산에 따라 첫 번째 이진 문자열을 두 번째 이진 문자열로 변환하는 방법을 배웠습니다. 프로그래머는 마지막 문자를 마지막 및 마지막 두 번째 문자의 최소값 또는 최대값으로 바꾸고 마지막 문자를 제거하여 한 문자열을 다른 문자열로 변환할 수 있는지 확인하려고 할 수 있습니다.

위 내용은 두 번째 비트를 반복적으로 교체하여 이진 문자열을 동일하게 만듭니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제