목차
접근법 1
알고리즘
输출
방법이
示例
백엔드 개발 C++ 번역: M 쿼리의 경우 주어진 문자열의 범위를 반대로 바꿉니다.

번역: M 쿼리의 경우 주어진 문자열의 범위를 반대로 바꿉니다.

Aug 25, 2023 pm 08:09 PM
질문 뒤집다

번역: M 쿼리의 경우 주어진 문자열의 범위를 반대로 바꿉니다.

이 문제에서는 배열 값에 따라 주어진 문자열에 대해 M개의 역방향 질의를 수행하겠습니다.

문제를 해결하는 순진한 접근 방식은 주어진 배열 값에 따라 각 문자열 세그먼트를 반대로 바꾸는 것입니다.

최적화된 접근 방식은 동일한 하위 문자열을 두 번 뒤집으면 원래 문자열을 얻는 논리를 사용합니다.

문제 설명 − 알파벳 문자가 포함된 알파 문자열을 제공했습니다. 또한 양의 정수를 포함하는 M 크기의 arr[] 배열을 제공했습니다. 주어진 문자열에 대해 M 연산을 수행하고 최종 문자열을 반환해야 합니다.

각 연산에서 우리는 arr[i]를 가져와서 하위 문자열 arr[i]를 N − arr[i] + 1로 되돌려야 합니다.

示例例子

输入

으아악

输출

으아악

설명 

  • 执行第一个查询后,字符串变为 'psrqt'。

  • 执行第二个查询后,我们得到了 'tqrsp'。

输入

으아악

输출

으아악

설명 − 如果我们对同一个查询执行偶数次,我们会得到串串。

输入

으아악

输출

으아악

Explanation − 동일한 쿼리를 홀수 번 수행하면 문자열의 반대가 나옵니다.

접근법 1

이 접근 방식에서는 reverse() 메서드를 사용하여 하위 문자열을 반전합니다. 주어진 쿼리를 사용하여 시작 및 끝 포인터를 취하고 주어진 문자열의 하위 문자열을 반전시킵니다.

알고리즘

步骤 1 - 开始遍历查询数组。

第2步 - 使用arr[p] - 1初始化'left'变weight。

3단계 − str_len − arr[p] + 1을 사용하여 'right' 변수를 초기화합니다.

4단계 − reverse() 메서드를 사용하여 하위 문자열을 왼쪽 포인터에서 오른쪽 포인터로 반전시킵니다.

으아악

输출

으아악

시간 복잡도 − 부분 문자열을 M번 뒤집는 경우 O(N*M)입니다.

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

방법이

이 접근 방식에서는 특정 쿼리를 사용하여 해당 특정 인덱스와 반전에 포함된 횟수를 계산합니다. 인덱스가 짝수 번 포함되면 이를 되돌릴 필요가 없습니다. 주어진 모든 쿼리에 인덱스가 홀수 번 포함된 경우 특정 인덱스의 문자를 뒤집어야 합니다.

알고리즘

步骤 1 - 初始ization长島等于字符串长島 的 'cnt' 列表,用 0 存储特引反转中流现的次数。

2단계 − 주어진 쿼리 배열을 탐색하고 현재 쿼리에 따라 문자열의 왼쪽 및 오른쪽 포인터를 가져옵니다.

3단계 − 또한 현재 쿼리의 왼쪽 및 오른쪽 포인터에 따라 'cnt' 목록을 업데이트하려면changeRange() 함수를 실행하세요.

3.1단계 −changeRange() 함수에서 'cnt' 목록의 '왼쪽' 인덱스에 있는 값을 증가시킵니다.

第3.2步 - 减小“cnt”列表中位于“right + 1”指针右侧的所有值。

여기서는 [왼쪽, 오른쪽] 범위에서 'cnt' 목록의 모든 값을 1씩 증가시켜야 했습니다. 따라서 접두사 sum을 사용하면 모든 값이 '왼쪽' 인덱스의 오른쪽에 있는 1만큼 증가하기 때문에 cnt[left]만 1만큼 증가했습니다. 또한 [right, str_len] 인덱스 사이의 cnt 값을 증가시키고 싶지 않으므로 접두사 합계가 1만큼 증가하므로 이미 1만큼 감소시켰습니다.

4단계 − 다음으로 getPrefixSum() 함수를 실행하여 'cnt' 목록의 접두어 합계를 계산합니다.

4.1단계 − getPrefixSum() 함수에서 문자열을 순회하고 이전 요소의 값을 현재 요소에 추가합니다.

步骤 5 - 接下来,以逆序遍历'cnt'列表。如果当前元素是奇数,则将其追加到'tmp'字符串中。

步骤 6 - 用0初始化'p'와'q',按光原始顺序遍历'cnt'列表。

步骤 7 − 如果'cnt'列表中的当前 元素是奇数,则使用tmp[q]更newalpha[p]。

8단계 − 마지막으로 알파 문자열을 반환합니다.

的中文翻译为:

示例

으아악

输출

으아악

시간 복잡도 − O(M*N + N), 여기서 O(M*N)은 쿼리에 따라 'cnt' 목록을 업데이트하고 O(N)은 주어진 문자열을 업데이트합니다.

공공间复杂degree - 使사용 'cnt' 列表为 O(N)。

현재 제1방식 중, 저는 reveres()방식을 사용하고 있습니다.转中 流现의 次数。

위 내용은 번역: M 쿼리의 경우 주어진 문자열의 범위를 반대로 바꿉니다.의 상세 내용입니다. 자세한 내용은 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 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

12306 항공권 구매 내역 확인 방법 항공권 구매 내역 확인 방법 12306 항공권 구매 내역 확인 방법 항공권 구매 내역 확인 방법 Mar 28, 2024 pm 03:11 PM

12306 티켓 예매 앱의 최신 버전을 다운로드하세요. 모두가 매우 만족하는 여행 티켓 구매 소프트웨어입니다. 소프트웨어에서 제공되는 다양한 티켓 소스가 있어 매우 편리합니다. - 실명인증으로 온라인 구매가 가능합니다. 모든 사용자가 쉽게 여행티켓과 항공권을 구매하고 다양한 할인 혜택을 누릴 수 있습니다. 또한 사전에 예약하고 티켓을 얻을 수도 있습니다. 호텔을 예약하거나 차량으로 픽업 및 하차할 수도 있습니다. 한 번의 클릭으로 원하는 곳으로 이동하고 티켓을 구매할 수 있어 여행이 더욱 간편해지고 편리해집니다. 모든 사람의 여행 경험이 더욱 편안해졌습니다. 이제 편집자가 온라인으로 자세히 설명합니다. 12306명의 사용자에게 과거 티켓 구매 기록을 볼 수 있는 방법을 제공합니다. 1. 철도 12306을 열고 오른쪽 하단의 My를 클릭한 후 My Order를 클릭합니다. 2. 주문 페이지에서 Paid를 클릭합니다. 3. 유료페이지에서

Xuexin.com에서 학업 자격을 확인하는 방법 Xuexin.com에서 학업 자격을 확인하는 방법 Mar 28, 2024 pm 04:31 PM

Xuexin.com에서 내 학업 자격을 어떻게 확인하나요? Xuexin.com에서 학업 자격을 확인할 수 있습니다. 많은 사용자가 Xuexin.com에서 학업 자격을 확인하는 방법을 모릅니다. 다음으로 편집자는 Xuexin.com에서 학업 자격을 확인하는 방법에 대한 그래픽 튜토리얼을 제공합니다. 유저들이 와서 구경해 보세요! Xuexin.com 사용 튜토리얼: Xuexin.com에서 학업 자격을 확인하는 방법 1. Xuexin.com 입구: https://www.chsi.com.cn/ 2. 웹사이트 쿼리: 1단계: Xuexin.com 주소를 클릭합니다. 위의 홈페이지에 들어가려면 [교육 쿼리]를 클릭합니다. 2단계: 최신 웹페이지에서 아래 그림의 화살표와 같이 [쿼리]를 클릭합니다. 3단계: 새 페이지에서 [학점 파일에 로그인]을 클릭합니다. 4단계: 로그인 페이지에서 정보를 입력하고 [로그인]을 클릭합니다.

PHP에서 int형을 문자열로 변환하는 방법에 대한 자세한 설명 PHP에서 int형을 문자열로 변환하는 방법에 대한 자세한 설명 Mar 26, 2024 am 11:45 AM

PHP에서 int 유형을 문자열로 변환하는 방법에 대한 자세한 설명 PHP 개발에서 int 유형을 문자열 유형으로 변환해야 하는 경우가 종종 있습니다. 이 변환은 다양한 방법으로 수행할 수 있습니다. 이 기사에서는 독자의 이해를 돕기 위해 특정 코드 예제와 함께 몇 가지 일반적인 방법을 자세히 소개합니다. 1. PHP 내장 함수 strval()을 사용하세요. PHP는 다양한 유형의 변수를 문자열 유형으로 변환할 수 있는 내장 함수 strval()을 제공합니다. int형을 string형으로 변환해야 할 때,

python_python 반복 문자열 튜토리얼에서 문자열을 반복하는 방법 python_python 반복 문자열 튜토리얼에서 문자열을 반복하는 방법 Apr 02, 2024 pm 03:58 PM

1. 먼저 pycharm을 열고 pycharm 홈페이지로 들어갑니다. 2. 그런 다음 새 Python 스크립트를 생성하고 마우스 오른쪽 버튼을 클릭하고 새로 만들기를 클릭한 후 Pythonfile을 클릭합니다. 3. 문자열(코드: s="-")을 입력합니다. 4. 그런 다음 문자열의 기호를 20번 반복해야 합니다(코드: s1=s*20). 5. 인쇄 출력 코드(코드: print(s1))를 입력합니다. 6. 마지막으로 스크립트를 실행하면 하단에 반환 값이 표시됩니다. - 20번 반복됩니다.

Golang에서 문자열이 특정 문자로 시작하는지 확인하는 방법은 무엇입니까? Golang에서 문자열이 특정 문자로 시작하는지 확인하는 방법은 무엇입니까? Mar 12, 2024 pm 09:42 PM

Golang에서 문자열이 특정 문자로 시작하는지 확인하는 방법은 무엇입니까? Golang으로 프로그래밍할 때 문자열이 특정 문자로 시작하는지 확인해야 하는 상황에 자주 직면하게 됩니다. 이 요구 사항을 충족하기 위해 Golang의 문자열 패키지에서 제공하는 기능을 사용할 수 있습니다. 다음에는 Golang을 사용하여 문자열이 특정 문자로 시작하는지 확인하는 방법을 구체적인 코드 예제와 함께 자세히 소개하겠습니다. Golang에서는 strings 패키지의 HasPrefix를 사용할 수 있습니다.

Golang 문자열이 지정된 문자로 끝나는지 확인하는 방법 Golang 문자열이 지정된 문자로 끝나는지 확인하는 방법 Mar 12, 2024 pm 04:48 PM

제목: Golang에서 문자열이 특정 문자로 끝나는지 확인하는 방법 Go 언어에서는 문자열을 처리할 때 문자열이 특정 문자로 끝나는지 확인해야 하는 경우가 있습니다. 이 기사에서는 Go 언어를 사용하여 이 기능을 구현하는 방법을 소개하고 참조용 코드 예제를 제공합니다. 먼저 Golang에서 문자열이 지정된 문자로 끝나는지 확인하는 방법을 살펴보겠습니다. Golang의 문자열에 포함된 문자는 인덱싱을 통해 얻을 수 있으며, 문자열의 길이는 다음과 같습니다.

MySQL과 PL/SQL의 유사점과 차이점 비교 MySQL과 PL/SQL의 유사점과 차이점 비교 Mar 16, 2024 am 11:15 AM

MySQL과 PL/SQL은 각각 관계형 데이터베이스와 절차적 언어의 특성을 나타내는 서로 다른 두 가지 데이터베이스 관리 시스템입니다. 이 기사에서는 구체적인 코드 예제를 통해 MySQL과 PL/SQL 간의 유사점과 차이점을 비교합니다. MySQL은 SQL(구조적 쿼리 언어)을 사용하여 데이터베이스를 관리하고 운영하는 인기 있는 관계형 데이터베이스 관리 시스템입니다. PL/SQL은 Oracle 데이터베이스 고유의 절차적 언어로 저장 프로시저, 트리거, 함수 등의 데이터베이스 개체를 작성하는 데 사용됩니다. 같은

Go 언어에서 문자열을 가로채는 방법 Go 언어에서 문자열을 가로채는 방법 Mar 13, 2024 am 08:33 AM

Go 언어는 문자열 가로채기를 포함하여 풍부한 문자열 처리 기능을 제공하는 강력하고 유연한 프로그래밍 언어입니다. Go 언어에서는 슬라이스를 사용하여 문자열을 가로챌 수 있습니다. 다음으로 Go 언어에서 문자열을 가로채는 방법을 구체적인 코드 예시와 함께 자세히 소개하겠습니다. 1. 슬라이싱을 사용하여 문자열 가로채기 Go 언어에서는 슬라이싱 표현식을 사용하여 문자열의 일부를 가로챌 수 있습니다. 슬라이스 표현식의 구문은 다음과 같습니다: Slice:=str[start:end]where, s

See all articles