카멜케이스 매칭

2063 단어 theabbieleetcodedsa
문자열 배열 queries과 문자열 pattern이 주어지면 answeranswer[i]와 일치하면 truequeries[i]이고 그렇지 않으면 pattern인 부울 배열 false을 반환합니다.

질의어queries[i]는 질의어와 같도록 영문 소문자 패턴을 삽입할 수 있으면 일치pattern합니다. 임의의 위치에 각 문자를 삽입할 수 있으며 아무 문자도 삽입할 수 없습니다.

예 1:

입력: 쿼리 = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], 패턴 = "FB"
출력: [참,거짓,참,참,거짓]
설명: "FooBar"는 "F"+ "oo"+ "B"+ "ar"와 같이 생성될 수 있습니다.
"FootBall"은 "F"+ "oot"+ "B"+ "all"과 같이 생성될 수 있습니다.
"FrameBuffer"는 "F"+ "rame"+ "B"+ "uffer"와 같이 생성될 수 있습니다.

예 2:

입력: 쿼리 = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], 패턴 = "FoBa"
출력: [참,거짓,참,거짓,거짓]
설명: "FooBar"는 "Fo"+ "o"+ "Ba"+ "r"과 같이 생성될 수 있습니다.
"FootBall"은 "Fo"+ "ot"+ "Ba"+ "ll"과 같이 생성될 수 있습니다.

예 3:

입력: 쿼리 = ["FooBar","FooBarTest","FootBall","FrameBuffer","ForceFeedBack"], 패턴 = "FoBaT"
출력: [거짓,참,거짓,거짓,거짓]
설명: "FooBarTest"는 "Fo"+ "o"+ "Ba"+ "r"+ "T"+ "est"와 같이 생성될 수 있습니다.

제약:
  • 1 <= pattern.length, queries.length <= 100
  • 1 <= queries[i].length <= 100
  • queries[i]pattern는 영문자로 구성됩니다.

  • 해결책:

    class Solution:
        def camelMatch(self, queries: List[str], pattern: str) -> List[bool]:
            n = len(pattern)
            pattCaps = "".join([c for c in pattern if c.isupper()])
            answer = []
            for q in queries:
                m = len(q)
                qCaps = "".join([c for c in q if c.isupper()])
                if pattCaps != qCaps:
                    answer.append(False)
                    continue
                i = 0
                j = 0
                while i < n and j < m:
                    if pattern[i] == q[j]:
                        i += 1
                        j += 1
                    else:
                        j += 1
                answer.append(i == n)
            return answer
    

    좋은 웹페이지 즐겨찾기