>  기사  >  백엔드 개발  >  한 위치에서만 다른 문자열 쌍의 수를 센다.

한 위치에서만 다른 문자열 쌍의 수를 센다.

WBOY
WBOY앞으로
2023-09-04 20:13:05719검색

한 위치에서만 다른 문자열 쌍의 수를 센다.

소개

문자열은 영숫자 문자로 구성되며 각 문자는 결정된 위치와 연결됩니다. 문자 위치 범위는 0부터 문자열 길이까지입니다. 한 위치에서 완전히 다른 문자를 인접 문자라고 합니다.

이 기사에서는 한 위치에서 완전히 다른 문자열 배열을 입력으로 사용하는 코드를 개발합니다. 이 주제를 더 잘 이해하기 위해 아래 예를 살펴보겠습니다. -

예 1 - str - {"abc", "cba", "dbc", "acc"}

출력 - 2

예를 들어 아래 예에서는 두 쌍의 {"abc", "dbc"} 및 {"abc", acc"}가 생성될 수 있습니다. 이러한 문자열은 각각 하나의 문자 위치만 다릅니다.

이 글에서는 매핑을 활용하여 비슷한 문자열을 저장하는 코드와 총 문자열 쌍 수를 구하는 패턴을 개발하겠습니다. C++ 맵은 일정한 시간 복잡도로 데이터를 저장하고 검색하기 위해 키-값 쌍을 활용합니다.

문법

substr()

substr() 메서드는 더 큰 문자열의 시작부터 끝-1까지 하위 문자열에 액세스하는 데 사용됩니다. 액세스할 모든 인덱스는 연속적이고 순서가 지정되어야 합니다.

매개변수 -

st - 시작 위치

end - 하위 문자열 액세스가 종료되는 끝 위치

알고리즘

  • 문자열 벡터, 문자열을 허용합니다.

  • 처음에는 조건을 충족하는 총 쌍 수를 저장하는 카운터를 유지 관리합니다.

  • 와일드카드를 보존하는 패턴을 만족하는 문자열뿐만 아니라 동일한 문자열을 저장하기 위해 두 개의 맵을 유지관리하세요. 이 매핑이 m1이라고 가정해 보겠습니다.

  • 유사한 문자열을 저장하려면 또 다른 맵을 유지하세요. 이 매핑이 m2라고 가정해 보겠습니다.

  • 입력 배열에 대해 반복을 수행합니다.

  • 유사한 유형의 문자열이 관찰될 때마다 m2 맵의 해당 개수가 증가합니다

  • 하위 문자열은 와일드카드를 사용하여 문자열의 개별 문자를 대체하여 생성됩니다.

  • 유사한 유형의 패턴이 관찰될 때마다 m1 플롯의 해당 개수가 증가합니다

  • m1과 m2에서 각각 관찰된 문자열 쌍의 합을 계산합니다.

  • 이 합산된 값을 사용하여 개수를 늘리세요.

다음 C++ 코드 조각은 문자열 배열을 입력으로 사용하고 한 위치에서만 다른 쌍의 총 개수를 계산하는 데 사용됩니다. -

으아악

출력

으아악

결론

Maps는 O(1) 시간 복잡도로 레코드 삽입 및 업데이트 프로세스를 시뮬레이션합니다. C++의 하위 문자열 메서드를 사용하면 지정된 인덱스 사이의 순서대로 문자열 문자에 액세스할 수 있습니다. n과 n-1의 곱을 2로 나눈 값은 임의 수의 쌍의 합을 제공합니다.

위 내용은 한 위치에서만 다른 문자열 쌍의 수를 센다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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