2707. 문자열의 추가 문자
난이도:중
주제: 배열, 해시 테이블, 문자열, 동적 프로그래밍, Trie
인덱스가 0인 문자열과 단어 사전이 제공됩니다. 각 하위 문자열이 사전에 존재하도록 s를 하나 이상의 겹치지 않는 하위 문자열로 나누어야 합니다. 하위 문자열에는 없는 s의 추가 문자가 있을 수 있습니다.
이별 시 남은 추가 문자 수최소를 최적으로반환합니다.
예 1:
예 2:
제약조건:
힌트:
해결책:
dp[i]가 최적 분할 후 하위 문자열 s[0:i]에 있는 추가 문자의 최소 수를 나타내는 dp 배열을 정의할 수 있습니다.
동적 프로그래밍 정의:
전환:
결과:
이 솔루션을 PHP로 구현해 보겠습니다: 2707. 문자열의 추가 문자
설명:
기본 사례:
- 빈 문자열에는 추가 문자가 없으므로 dp[0] = 0입니다.
사전 조회:
- 상시 조회를 위해 array_flip()을 사용하여 사전 단어를 해시 맵에 저장합니다.
전환:
- 각 위치 i에 대해 가능한 모든 하위 문자열 s[j:i]를 확인합니다. 사전에 하위 문자열이 있으면 dp[i] 값을 업데이트합니다.
시간 복잡도:
- 시간 복잡도는 O(n^2)입니다. 여기서 n은 문자열 s의 길이입니다. 왜냐하면 각 인덱스에 대해 이전의 모든 인덱스를 확인하여 하위 문자열을 형성하기 때문입니다.
테스트 결과:
사전 ["leet","code","leetcode"]가 있는 입력 "leetscode"의 경우 함수는 1개의 추가 문자("s")만 남으므로 1을 올바르게 반환합니다.
사전 ["hello","world"]가 있는 입력 "sayhelloworld"의 경우 처음 세 문자("say")가 추가이므로 함수는 3을 반환합니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.
위 내용은 문자열의 추가 문자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!