목차
문제 설명
방법
출력
테스트 케이스 설명
결론
백엔드 개발 C++ 이진 문자열을 오름차순으로 정렬하기 위해 제거해야 하는 최소 문자 수

이진 문자열을 오름차순으로 정렬하기 위해 제거해야 하는 최소 문자 수

Sep 08, 2023 pm 10:49 PM
바이너리 삭제 종류

이진 문자열을 오름차순으로 정렬하기 위해 제거해야 하는 최소 문자 수

컴퓨터 과학에서 문자열 조작은 접합, 하위 문자열 및 반전과 같은 작업과 관련된 중요한 주제입니다. 문자열 조작과 관련된 일반적인 문제는 이진 문자열에서 모든 0을 제거하는 것입니다. 이 기사에서는 이 문제를 해결하기 위해 인접하지 않은 쌍 뒤집기를 최소한으로 사용하는 알고리즘에 대해 설명합니다.

문제 설명

이진 문자열이 주어지면 인접하지 않은 쌍 뒤집기의 최소 횟수를 사용하여 문자열에서 모든 0을 제거해야 합니다. 뒤집기는 인접한 두 문자를 선택하고 바꾸는 것으로 정의됩니다. 즉, 문자열의 모든 0을 문자열 끝으로 가져오는 데 필요한 최소 뒤집기 횟수를 찾아야 합니다.

방법

그리디 알고리즘을 사용하여 이 문제를 해결할 수 있습니다. 문자열의 왼쪽에서 시작하여 0을 끝까지 뒤집은 마지막 인덱스를 추적할 수 있습니다. 0이 발견될 때마다 그 위치를 마지막으로 뒤집힌 0과 바꿔 문자열의 끝으로 이동합니다. 1이 발생하면 간단히 다음 인덱스로 이동합니다.

알고리즘을 자세히 살펴보겠습니다 -

  • 두 변수 "lastFlipped"와 "flipCount"를 각각 -1과 0으로 초기화합니다.

  • 바이너리 문자열을 왼쪽에서 오른쪽으로 탐색합니다.

  • 현재 문자가 "0"이면 인덱스 "lastFlipped + 1"에 있는 문자로 바꾸고 "lastFlipped" 변수를 증가시킵니다.

  • 각 스왑 작업에 대해 "flipCount" 변수를 증가시킵니다.

  • 순회가 완료된 후 모든 0은 문자열 끝에 있게 되며 "flipCount"에는 모든 0을 제거하는 데 필요한 최소 뒤집기 횟수가 포함됩니다.

위 알고리즘을 구현하는 데 사용된 C++ 코드입니다. -

으아악

출력

으아악

테스트 케이스 설명

이진 문자열 “100101000”을 예로 들어 보겠습니다. 인접하지 않은 쌍 뒤집기의 최소 횟수를 사용하여 문자열에서 모든 0을 제거해야 합니다.

  • 처음에는 "lastFlipped"와 "flipCount"가 각각 -1과 0으로 설정됩니다.

  • 왼쪽에서 오른쪽으로 문자열을 탐색하기 시작합니다.

  • 인덱스 1에서 '0'을 발견합니다. 이를 인덱스 "lastFlipped + 1"(즉, 인덱스 0)에 있는 문자로 바꾸고 "lastFlipped"를 0으로 증가시킵니다. 문자열은 "010101000"이 됩니다. "flipCount"가 1로 증가합니다.

  • 인덱스 4에서 또 다른 '0'을 발견합니다. 이를 인덱스 "lastFlipped + 1"(즉, 인덱스 1)에 있는 문자로 바꾸고 "lastFlipped"를 1로 늘립니다. 문자열은 "011010000"이 됩니다. "flipCount"가 2로 증가합니다.

  • 인덱스 5에서 '1'을 발견합니다. 다음 색인으로 이동합니다

결론

이 기사에서는 인접하지 않은 쌍 뒤집기의 최소 횟수를 사용하여 이진 문자열에서 모든 0을 제거하는 알고리즘에 대해 설명합니다. 이 알고리즘에서 사용하는 접근 방식은 탐욕적이므로 효율적이고 구현하기 쉽습니다. 또한 샘플 테스트 사례와 함께 알고리즘을 구현하기 위한 C++ 코드도 제공합니다.

이 문제는 동적 프로그래밍을 사용하여 해결할 수도 있지만 그리디 알고리즘이 더 간단하고 빠른 솔루션을 제공합니다. 이 알고리즘의 시간 복잡도는 O(n)입니다. 여기서 n은 이진 문자열의 길이입니다.

요약하자면, 최소 비인접 쌍 뒤집기 알고리즘은 문자열 연산에 유용한 도구이며 다양한 상황에 적용될 수 있습니다.

위 내용은 이진 문자열을 오름차순으로 정렬하기 위해 제거해야 하는 최소 문자 수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Xiaohongshu 메모를 삭제하는 방법 Xiaohongshu 메모를 삭제하는 방법 Mar 21, 2024 pm 08:12 PM

Xiaohongshu 메모를 삭제하는 방법 Xiaohongshu 앱에서 메모를 편집할 수 있습니다. 다음으로 편집기는 Xiaohongshu 메모 삭제 방법에 대한 사용자 사진과 텍스트를 가져옵니다. 보세요! Xiaohongshu 사용 튜토리얼 Xiaohongshu 메모 삭제 방법 1. 먼저 Xiaohongshu 앱을 열고 메인 페이지로 들어가서 오른쪽 하단에 있는 [Me]를 선택하여 특별 영역으로 들어갑니다. 2. 그런 다음 내 영역에서 다음과 같이 메모 페이지를 클릭합니다. 3. 노트 페이지에 들어가서 오른쪽 상단에 있는 [점 3개]를 클릭합니다. 4. 마지막으로 기능 표시줄이 하단에 확장되고 [삭제]를 클릭하여 완료합니다.

WeChat에서 차단 및 삭제되어 영구적으로 추가될 수 없다는 것이 사실인가요? WeChat에서 차단 및 삭제되어 영구적으로 추가될 수 없다는 것이 사실인가요? Apr 08, 2024 am 11:41 AM

1. 우선, 누군가를 영구 차단 및 삭제하고 영구 추가하지 않는 것은 허위입니다. 상대방을 차단하고 삭제한 후 추가하려면 상대방의 동의만 있으면 됩니다. 2. 사용자가 누군가를 차단하면 상대방은 해당 사용자에게 메시지를 보낼 수 없고, 사용자의 친구 서클을 볼 수 없으며, 사용자와 통화할 수 없습니다. 3. 차단은 사용자의 WeChat 연락처 목록에서 상대방을 삭제하는 것을 의미하지 않습니다. 4. 상대방을 차단한 후 자신의 위챗 연락처 목록에서 상대방을 삭제한 경우, 삭제 후 복구할 수 있는 방법이 없습니다. 5. 상대방을 다시 친구로 추가하려면 상대방이 동의한 후 다시 친구를 추가해야 합니다.

Xiaohongshu 릴리스를 삭제하는 방법은 무엇입니까? 삭제 후 복구하는 방법은 무엇입니까? Xiaohongshu 릴리스를 삭제하는 방법은 무엇입니까? 삭제 후 복구하는 방법은 무엇입니까? Mar 21, 2024 pm 05:10 PM

인기 있는 소셜 전자상거래 플랫폼인 Xiaohongshu는 일상생활과 쇼핑 경험을 공유하기 위해 많은 사용자를 끌어 모았습니다. 때때로 당사는 개인 이미지를 더 잘 유지하거나 플랫폼 규정을 준수하기 위해 적시에 삭제해야 하는 일부 부적절한 콘텐츠를 실수로 게시할 수 있습니다. 1. Xiaohongshu 릴리스를 삭제하는 방법은 무엇입니까? 1. Xiaohongshu 계정에 로그인하고 개인 홈페이지에 들어갑니다. 2. 개인 홈페이지 하단의 '내 창작물' 옵션을 찾아 클릭하여 입장합니다. 3. "내 창작물" 페이지에서는 노트, 동영상 등 게시된 모든 콘텐츠를 볼 수 있습니다. 4. 삭제가 필요한 콘텐츠를 찾아 오른쪽에 있는 "..." 버튼을 클릭하세요. 5. 팝업 메뉴에서 "삭제" 옵션을 선택하세요. 6. 삭제 확인 후 해당 콘텐츠는 개인 홈페이지 및 공개 페이지에서 사라집니다.

WeChat 파일 전송 도우미를 완전히 삭제하는 방법_WeChat 파일 전송 도우미를 닫는 방법 소개 WeChat 파일 전송 도우미를 완전히 삭제하는 방법_WeChat 파일 전송 도우미를 닫는 방법 소개 Mar 20, 2024 pm 08:31 PM

WeChat의 파일 전송 도우미는 모든 사용자가 사용할 수 있습니다. 일부 사용자는 이를 메모로 사용하여 일부 내용을 기록합니다. 그렇다면 WeChat 파일 전송 도우미를 완전히 삭제하는 방법은 무엇입니까? 아래에서 자세히 소개해드리겠습니다. WeChat 파일 전송 도우미를 완전히 삭제하는 방법은 무엇입니까? 답변: [WeChat]-[파일 전송 도우미 길게 누르기]-[이 채팅 삭제]. 구체적인 단계: 1. 먼저 홈 페이지에 들어간 후 [파일 전송 도우미]를 찾아 길게 누릅니다. 2. 그러면 팝업이 읽지 않음으로 표시되고 채팅을 상단에 고정합니다. 채팅을 표시하지 않고 채팅을 삭제합니다. 여기에서 [이 채팅 삭제]를 클릭할 수 있습니다.

TikTok 채팅 기록을 완전히 삭제하는 방법 TikTok 채팅 기록을 완전히 삭제하는 방법 May 07, 2024 am 11:14 AM

1. Douyin 앱을 열고 인터페이스 하단의 [메시지]를 클릭한 후 삭제해야 하는 채팅 대화 항목을 클릭합니다. 2. 채팅 기록 중 하나를 길게 누른 후 [복수 선택]을 클릭하고 삭제하려는 채팅 기록을 선택하세요. 3. 해당 기록을 영구 삭제하려면 오른쪽 하단의 [삭제] 버튼을 클릭한 후 팝업창에서 [삭제 확인]을 선택하세요.

TikTok에서 다른 사람에게 파일을 보내는 방법은 무엇입니까? 다른 사람에게 보낸 파일을 삭제하는 방법은 무엇입니까? TikTok에서 다른 사람에게 파일을 보내는 방법은 무엇입니까? 다른 사람에게 보낸 파일을 삭제하는 방법은 무엇입니까? Mar 22, 2024 am 08:30 AM

Douyin에서 사용자는 자신의 삶의 세부 사항과 재능을 공유할 수 있을 뿐만 아니라 다른 사용자와 상호 작용할 수도 있습니다. 이 과정에서 사진, 동영상 등의 파일을 다른 사용자에게 전송해야 하는 경우가 있습니다. 그렇다면 Douyin에서 다른 사람에게 파일을 보내는 방법은 무엇입니까? 1. Douyin에서 다른 사람에게 파일을 보내는 방법은 무엇입니까? 1. Douyin을 열고 파일을 보내려는 채팅 인터페이스로 들어갑니다. 2. 채팅 인터페이스에서 "+" 기호를 클릭하고 "파일"을 선택합니다. 3. 파일 옵션에서 사진, 비디오, 오디오 및 기타 파일을 보내도록 선택할 수 있습니다. 보내려는 파일을 선택한 후 "보내기"를 클릭하세요. 4. 상대방이 파일을 수락할 때까지 기다리세요. 상대방이 파일을 수락하면 파일이 성공적으로 전송됩니다. 2. Douyin에서 다른 사람에게 보낸 파일을 삭제하는 방법은 무엇입니까? 1. Douyin을 열고 보낸 문자를 입력하세요.

Xiaohongshu에서 다른 사람이 삭제한 댓글을 어떻게 검색할 수 있나요? 다른 사람의 댓글이 삭제되면 표시되나요? Xiaohongshu에서 다른 사람이 삭제한 댓글을 어떻게 검색할 수 있나요? 다른 사람의 댓글이 삭제되면 표시되나요? Mar 21, 2024 pm 10:46 PM

Xiaohongshu는 인기 있는 소셜 전자상거래 플랫폼으로, 사용자 간의 쌍방향 댓글은 플랫폼에서 없어서는 안될 커뮤니케이션 방법입니다. 때때로 우리의 댓글이 다른 사람에 의해 삭제되어 혼란스러울 수 있습니다. 1. Xiaohongshu에서 다른 사람이 삭제한 댓글을 어떻게 검색할 수 있나요? 댓글이 삭제된 것을 발견하면 먼저 플랫폼에서 관련 게시물이나 제품을 직접 검색하여 해당 댓글을 찾을 수 있는지 확인할 수 있습니다. 삭제 후에도 댓글이 계속 표시된다면 원래 게시물 소유자가 삭제했을 수 있습니다. 이때 원래 게시물 소유자에게 연락하여 댓글 삭제 이유를 문의하고 댓글 복원을 요청할 수 있습니다. 댓글이 완전히 삭제되어 원래 게시물에서 찾을 수 없는 경우, 해당 댓글이 플랫폼에 복원될 가능성은 상대적으로 희박합니다. 다른 방법을 시도해 볼 수 있습니다.

Word에서 아래쪽 화살표를 삭제하는 특정 단계! Word에서 아래쪽 화살표를 삭제하는 특정 단계! Mar 19, 2024 pm 08:50 PM

일상적인 사무에서 웹사이트의 텍스트 한 부분을 복사해 워드에 직접 붙여넣으면 [아래쪽 화살표]가 보이는 경우가 종종 있는데, 이 [아래쪽 화살표]를 선택하면 삭제할 수 있는데, 너무 많으면 삭제할 수 있다. 그런 기호가 있는데, 화살표를 모두 삭제하는 빠른 방법이 있나요? 그래서 오늘은 Word에서 아래쪽 화살표를 삭제하는 구체적인 단계를 알려드리겠습니다! 우선, Word의 [아래쪽 화살표]는 실제로 [수동 줄 바꿈]을 나타냅니다. 아래 그림과 같이 [아래쪽 화살표]를 모두 [단락 표시] 기호로 바꿀 수 있습니다. 2. 그런 다음 메뉴 모음에서 [찾기 및 바꾸기] 옵션을 선택합니다(아래 그림의 빨간색 원 참조). 3. 그런 다음 [바꾸기] 명령을 클릭하면 팝업 상자가 나타나는데, [특수 기호]를 클릭하세요.

See all articles