강력한 암호 검사기 II

1690 단어 theabbieleetcodedsa
다음 기준을 모두 충족하는 경우 암호가 강력하다고 합니다.
  • 최소 8자의 문자가 있습니다.
  • 소문자가 하나 이상 포함되어 있습니다.
  • 하나 이상의 대문자가 포함되어 있습니다.
  • 숫자가 하나 이상 포함되어 있습니다.
  • 하나 이상의 특수 문자가 포함되어 있습니다. 특수 문자는 "!@#$%^&*()-+" 문자열의 문자입니다.
  • 인접 위치에 동일한 문자의 2를 포함하지 않습니다(즉, "aab"는 이 조건을 위반하지만 "aba"는 위반하지 않습니다).
  • password 문자열이 주어지면 강력한 암호인 경우 true를 반환합니다. 그렇지 않으면 false 를 반환합니다.

    예 1:

    입력: 암호 = "IloveLe3tcode!"
    출력: 참
    설명: 암호가 모든 요구 사항을 충족합니다. 따라서 true를 반환합니다.

    예 2:

    입력: 암호 = "Me+You--IsMyDream"
    출력: 거짓
    설명: 암호에 숫자가 포함되어 있지 않으며 인접 위치에 동일한 문자가 2개 포함되어 있습니다. 따라서 false를 반환합니다.

    예 3:

    입력: 암호 = "1aB!"
    출력: 거짓
    설명: 암호가 길이 요구 사항을 충족하지 않습니다. 따라서 false를 반환합니다.

    제약:
  • 1 <= password.length <= 100
  • password는 문자, 숫자 및 특수 문자로 구성됩니다: "!@#$%^&*()-+" .

  • 해결책:

    class Solution:
        def strongPasswordCheckerII(self, p: str) -> bool:
            n = len(p)
            if len(p) < 8:
                return False
            lc = 0
            uc = 0
            dg = 0
            sc = 0
            for i in range(n):
                if p[i].islower():
                    lc += 1
                if p[i].isupper():
                    uc += 1
                if p[i].isdigit():
                    dg += 1
                if p[i] in "!@#$%^&*()-+":
                    sc += 1
                if i < n - 1 and p[i] == p[i + 1]:
                    return False
            return lc >= 1 and uc >= 1 and dg >= 1 and sc >= 1
    

    좋은 웹페이지 즐겨찾기