leetcode-10
'' 임의의 단일 문자 '*' 가 0 개 이상 앞 에 있 는 요소 와 일치 하 는 것 을 포함 합 니 다. 통 짜 문자열 일부 문자열 이 아 닌 s.
설명:
s 이 가능 하 다, ~ 할 수 있다,... a-z 라 는 소문 자 를 썼 다.p 이 가능 하 다, ~ 할 수 있다,... a-z 소문 자 . 화해시키다 *。예시 1:
입력: s = "aa" p = "a" 출력: false 설명: "a" 는 "aa" 전체 문자열 과 일치 할 수 없습니다.예시 2:
입력: s = "aa" p = "a *" 출력: true 설명: '*' 는 0 개 이상 의 앞의 요 소 를 일치 시 킬 수 있 기 때문에 여기 앞 에 있 는 요 소 는 'a' 입 니 다.따라서 문자열 'aa' 는 'a' 로 볼 수 있 습 니 다.예시 3:
입력: s = "ab" p = ". *" 출력: true 설명: ". *" 는 0 개 이상 ("*") 임 의 문자 (") 와 일치 할 수 있 음 을 나타 낸다.예시 4:
입력: s = "aab" p = "c * a * b" 출력: true 설명: '*' 는 0 개 또는 여러 개 를 표시 하기 때문에 여기 'c' 는 0 개 이 고 'a' 는 한 번 반복 된다.따라서 문자열 'aab' 와 일치 할 수 있 습 니 다.예시 5:
입력: s = "missisippi" p = "mis * is * p *." 출력: false
출처: 스냅 백 (LeetCode) 링크:https://leetcode-cn.com/problems/regular-expression-matching저작권 은 인터넷 에 귀속 된다.상업 전 재 는 정부 에 연락 하여 권한 을 부여 해 주 십시오. 비 상업 전 재 는 출처 를 밝 혀 주 십시오.
class Solution {
public boolean isMatch(String text, String pattern) {
if (pattern.isEmpty()) return text.isEmpty();
boolean first_match = (!text.isEmpty() &&
(pattern.charAt(0) == text.charAt(0) || pattern.charAt(0) == '.'));
if (pattern.length() >= 2 && pattern.charAt(1) == '*'){
// aa*aa pattern
return (isMatch(text, pattern.substring(2)) ||
(first_match && isMatch(text.substring(1), pattern)));
} else {
return first_match && isMatch(text.substring(1), pattern.substring(1));
}
}
}
이 문 제 는 좀 어렵 습 니 다. 저도 잠시 생각 했 지만 얻 은 것 이 없습니다. 이런 해법 은 논리 적 으로 처리 되 고 알고리즘 적 인 사고 가 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.