목차
방법 2
알고리즘
출력
백엔드 개발 C++ C++ 프로그램: 왼쪽과 오른쪽 회전이 동일한 숫자의 가장 긴 부분 수열을 찾습니다.

C++ 프로그램: 왼쪽과 오른쪽 회전이 동일한 숫자의 가장 긴 부분 수열을 찾습니다.

Aug 30, 2023 pm 01:33 PM
숫자 가장 긴 회전자 순서

C++ 프로그램: 왼쪽과 오른쪽 회전이 동일한 숫자의 가장 긴 부분 수열을 찾습니다.

이 문제에서는 왼쪽과 오른쪽 회전이 동일한 부분 수열의 최대 길이를 구해야 합니다. 왼쪽 회전은 문자열의 모든 문자를 왼쪽으로 이동하고 끝의 첫 번째 문자를 이동하는 것을 의미합니다. 오른쪽 회전은 모든 문자열 문자를 오른쪽으로 이동하고 마지막 문자를 시작 부분으로 이동하는 것을 의미합니다.

문제 설명 – 숫자가 포함된 문자열 str이 주어지고 동일한 왼쪽 및 오른쪽 회전으로 최대 길이의 하위 시퀀스를 찾아야 합니다.

Enter -str="323232",

출력– 6

설명 – 왼쪽과 오른쪽 회전이 동일한 가장 긴 부분 수열은 “323232”입니다. 왼쪽으로 회전하면 '232323', 오른쪽으로 회전하면 '232323'이 됩니다.

Enter -str = '00010100'

출력– 6

설명 - 왼쪽과 오른쪽 회전이 동일한 가장 긴 부분 수열은 "000000"입니다.

Enter -str = '092312110431010'

출력– 6

설명 – 왼쪽과 오른쪽 회전이 동일한 길이 6의 하위 수열이 2개 있습니다. 첫 번째는 "010101"이고 두 번째는 "101010"입니다.

방법 1

이 방법에서는 주어진 문자열의 가능한 모든 하위 시퀀스를 찾습니다. 그런 다음 문자열의 왼쪽 회전과 오른쪽 회전이 동일한지 확인합니다. 가능한 모든 하위 수열을 찾기 위해 재귀적 방법을 사용할 것입니다.

알고리즘

  • 왼쪽 및 오른쪽 회전에 대해 동일한 가장 긴 부분 시퀀스의 길이를 저장하려면 "maxLen" 전역 변수를 0으로 초기화하세요.

  • 문자열의 왼쪽 회전과 오른쪽 회전이 동일한지 확인하려면 isRightSameLeft() 함수를 정의하세요.

    • 함수 내에서 substr() 메서드를 사용하여 문자열을 왼쪽과 오른쪽으로 회전합니다.

  • getAllSubSeq() 함수는 주어진 문자열의 가능한 모든 하위 시퀀스를 찾는 데 사용됩니다.

  • 기본 사례를 정의합니다. str이 비어 있으면 하위 시퀀스를 가져오고 isRightSameLeft() 함수를 실행하여 하위 시퀀스의 왼쪽 및 오른쪽 회전이 동일한지 확인합니다. 그렇다면 길이가 "maxLen"의 현재 값보다 크면 "maxLen" 변수의 값을 업데이트하십시오.

  • "str"에서 첫 번째 문자를 제거하고 "out" 문자열을 추가한 후 재귀 호출을 수행합니다.

  • 첫 번째 문자를 제거하고 "out" 문자열을 변경하지 않은 후 또 다른 재귀 함수 호출을 수행합니다. 이 재귀 호출에서는 "str"의 첫 번째 문자를 제외합니다.

으아악

출력

으아악

시간 복잡도 - O(N*2N). 여기서는 왼쪽과 오른쪽 회전을 비교하기 위한 O(N)과 가능한 모든 하위 시퀀스를 찾기 위한 O(2N)입니다.

공간 복잡도 - 추가 공간을 사용하지 않으므로 O(1)입니다.

방법 2

여기에서는 위의 방법을 최적화했습니다. 샘플 입력의 해를 관찰할 수 있습니다. 하위 시퀀스의 왼쪽 및 오른쪽 회전은 하위 시퀀스에 동일한 문자가 포함되거나 교대로 두 개의 다른 문자가 포함되고 길이가 짝수인 경우에만 동일합니다.

알고리즘

  • 두 개의 중첩 루프를 사용하여 두 숫자를 결합하세요.

  • 두 개의 숫자가 교대로 포함된 부분 수열의 길이를 구하려면 'cnt' 변수를 정의하고 0으로 초기화하세요.

  • 다음 문자가 i번째 문자인지 j번째 문자인지 추적하는 부울 "first" 변수를 정의합니다.

  • 루프를 사용하여 문자열을 탐색하세요.

  • first == true이고 str[k] - '0' == I인 경우 'first' 값을 대체하고 'cnt'를 1씩 증가시킵니다.

  • first == false이고 str[k] - '0' == j인 경우 'first' 값을 다시 대체하고 'cnt'를 1씩 증가시킵니다.

  • i와 j가 같지 않고 "cnt" 값이 홀수이면 1씩 감소합니다.

  • cnt 값이 "res"보다 큰 경우 "res" 변수의 값을 업데이트하세요.

으아악

출력

으아악

시간 복잡도 - O(10*10*N) 숫자 조합을 포함하는 문자열에서 하위 시퀀스를 찾기 때문입니다.

공간 복잡성 - 동적 공간을 사용하지 않기 때문에 O(1)입니다.

이 튜토리얼에서는 동일한 왼쪽 및 오른쪽 회전을 포함하는 가장 긴 부분 수열을 찾는 두 가지 방법을 알려줍니다. 첫 번째 방법은 시간이 많이 걸리고 큰 입력에는 사용할 수 없는 간단한 방법입니다.

두 번째 방법은 최적화되었으며 시간 복잡도는 O(N)과 거의 같습니다.

위 내용은 C++ 프로그램: 왼쪽과 오른쪽 회전이 동일한 숫자의 가장 긴 부분 수열을 찾습니다.의 상세 내용입니다. 자세한 내용은 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를 무료로 생성하십시오.

뜨거운 도구

메모장++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 04:26 PM

라이프스타일 공유 플랫폼인 Xiaohongshu는 점점 더 많은 사용자가 자신의 비디오 콘텐츠를 게시하고 다른 사용자와 일상을 공유하기로 선택하는 곳입니다. 많은 사용자가 동영상을 게시할 때 문제에 직면할 수 있습니다. 자신이나 다른 사람이 동영상을 게시한 시간을 어떻게 확인하나요? 1. 샤오홍슈가 영상을 공개한 시간을 어떻게 확인하나요? 1. 영상을 게시한 시간을 확인하려면 먼저 Xiaohongshu 앱을 열고 개인 계정에 로그인해야 합니다. 개인 홈페이지 인터페이스 하단에 '생성'이라고 표시된 옵션이 있습니다. 클릭하여 입력하면 '동영상'이라는 열이 표시됩니다. 여기에서 게시된 모든 비디오 목록을 탐색하고 게시된 시기를 쉽게 확인할 수 있습니다. 각 동영상을 클릭하면 오른쪽 상단에 '세부정보 보기' 버튼이 있습니다.

iOS 17: 대기 모드에서 iPhone 시계 스타일을 변경하는 방법 iOS 17: 대기 모드에서 iPhone 시계 스타일을 변경하는 방법 Sep 10, 2023 pm 09:21 PM

대기는 iPhone이 충전기에 연결되어 있고 가로(또는 가로) 방향일 때 활성화되는 잠금 화면 모드입니다. 세 가지 화면으로 구성되어 있으며 그 중 하나는 전체 화면 시간으로 표시됩니다. 시계 스타일을 변경하는 방법을 알아보려면 계속 읽어보세요. StandBy의 세 번째 화면에는 수직으로 스와이프할 수 있는 다양한 테마의 시간과 날짜가 표시됩니다. 일부 테마에는 온도나 다음 알람과 같은 추가 정보도 표시됩니다. 시계를 길게 누르면 디지털, 아날로그, 세계, 태양광, 플로팅 등 다양한 테마 간에 전환할 수 있습니다. Float는 사용자 정의 가능한 색상의 큰 거품 숫자로 시간을 표시하고, Solar는 다양한 색상의 태양 플레어 디자인을 갖춘 보다 표준적인 글꼴을 가지며, World는 강조 표시하여 세계를 표시합니다.

노트북에서 1~9 숫자를 입력할 수 없으면 어떻게 해야 하나요? 노트북에서 1~9 숫자를 입력할 수 없으면 어떻게 해야 하나요? Feb 23, 2023 pm 05:19 PM

노트북에서 숫자 1-9를 입력할 수 없는 이유는 설정 문제 때문입니다. 해결 방법은 다음과 같습니다. 1. "win+r"을 눌러 실행을 열고 cmd를 입력한 후 Enter를 누릅니다. 3. 가상 키보드에서 "옵션"을 클릭하고 "숫자 키패드 켜기"를 선택합니다. 4. "numlock 키"를 활성화합니다.

JavaScript에서 난수 및 문자열 생성 JavaScript에서 난수 및 문자열 생성 Sep 02, 2023 am 08:57 AM

난수 또는 영숫자 문자열을 생성하는 기능은 많은 상황에서 유용합니다. 이를 사용하여 게임의 다양한 위치에 적이나 음식을 생성할 수 있습니다. 또한 이를 사용하여 사용자에게 임의의 비밀번호를 제안하거나 파일 이름을 만들어 파일을 저장할 수도 있습니다. 나는 PHP에서 임의의 영숫자 문자열을 생성하는 방법에 대한 튜토리얼을 작성했습니다. 나는 이 게시물의 시작 부분에서 실제로 무작위인 이벤트는 거의 없으며 난수나 문자열 생성에도 동일하게 적용된다고 말했습니다. 이 튜토리얼에서는 JavaScript에서 의사 난수 영숫자 문자열을 생성하는 방법을 보여 드리겠습니다. JavaScript에서 난수 생성하기 난수 생성부터 시작해 보겠습니다. 가장 먼저 떠오르는 메서드는 부동 소수점을 반환하는 Math.random()입니다.

숫자를 소수점 이하 n자리로 반올림하는 C++ 프로그램 숫자를 소수점 이하 n자리로 반올림하는 C++ 프로그램 Sep 12, 2023 pm 05:13 PM

숫자를 출력으로 표현하는 것은 어떤 언어로든 프로그램을 작성할 때 흥미롭고 중요한 작업입니다. 정수 유형(짧은, 긴 또는 중간 유형의 데이터)의 경우 숫자를 출력으로 표현하는 것이 쉽습니다. 부동 소수점 숫자(float 또는 double 유형)의 경우 때로는 특정 소수 자릿수로 반올림해야 합니다. 예를 들어 52.24568을 소수점 세 자리로 표현하려면 일부 전처리가 필요합니다. 이 기사에서는 반올림을 통해 부동 소수점 숫자를 특정 소수 자릿수로 표현하는 몇 가지 기술을 소개합니다. 다양한 접근 방식 중에서 C와 유사한 형식 문자열을 사용하고, 정밀도 인수를 사용하고, 수학 라이브러리의 round() 함수를 사용하는 것이 중요합니다. 하나씩 살펴보겠습니다. ~와 함께

C++를 사용하여 N번째 제곱수가 아닌 숫자를 찾는 코드를 작성하세요. C++를 사용하여 N번째 제곱수가 아닌 숫자를 찾는 코드를 작성하세요. Aug 30, 2023 pm 10:41 PM

우리 모두는 2, 3, 5, 7, 8 등과 같이 어떤 숫자의 제곱도 아닌 숫자를 알고 있습니다. N개의 정사각형이 아닌 숫자가 있으며 모든 숫자를 아는 것은 불가능합니다. 그래서 이 글에서는 제곱이 없는 숫자나 제곱이 아닌 숫자에 대한 모든 것과 C++에서 N번째 제곱이 아닌 숫자를 찾는 방법을 설명할 것입니다. N번째 비제곱수 어떤 숫자가 정수의 제곱인 경우, 그 숫자를 완전제곱수라고 합니다. 완전제곱수의 몇 가지 예는 다음과 같습니다. -1issquareof14issquareof29issquareof316issquareof425issquareof5 숫자가 정수의 제곱이 아닌 경우 해당 숫자를 제곱이 아닌 숫자라고 합니다. 예를 들어, 처음 15개의 정사각형이 아닌 숫자는 -2,3,5,6입니다.

PHP에서 is_numeric() 함수를 사용하여 숫자인지 확인하세요. PHP에서 is_numeric() 함수를 사용하여 숫자인지 확인하세요. Jun 27, 2023 pm 05:00 PM

PHP 프로그래밍 언어에서 is_numeric() 함수는 변수나 값이 숫자인지 확인하는 데 사용되는 매우 일반적으로 사용되는 함수입니다. 실제 프로그래밍에서는 사용자가 입력한 값이 숫자형인지 확인해야 하는 경우가 많습니다. 이 경우 is_numeric() 함수를 사용하여 확인할 수 있습니다. 1. is_numeric() 함수 소개 is_numeric() 함수는 변수나 값이 숫자인지 감지하는 데 사용되는 함수입니다. 변수 또는 값이 숫자인 경우 tru를 반환합니다.

C++를 사용하여 범위 내 어떤 숫자로도 나누어지지 않는 숫자 찾기 C++를 사용하여 범위 내 어떤 숫자로도 나누어지지 않는 숫자 찾기 Sep 13, 2023 pm 09:21 PM

이 글에서는 2와 10 사이의 어떤 숫자로도 나누어지지 않는 1과 n 사이의 숫자(주어진 숫자)를 찾는 문제에 대해 논의할 것입니다. 몇 가지 예를 통해 이를 이해해 보겠습니다. 입력:num=14Output:3Explanation:나누 수 없는 세 개의 숫자 1,11,13이 있습니다.Input:num=21Output:5Explanation:나누 수 없는 다섯 개의 숫자 1,11,13,17,19가 있습니다. 해결된 경우 간단한 방법입니다.

See all articles