Python 실습 22: 랜섬노트

의문


  • ransomNotemagazine 두 개의 문자열이 주어지면,
  • 반품true

  • if ransomNote _구성 가능
  • from_ magazinefalse 문자를 사용합니다.


  • magazine의 각 문자는 ransomNote에서 한 번만 사용할 수 있습니다.

  • 예시


  • 예 1:

  • 입력: ransomNote = "a", 잡지 = "b"
    출력: 거짓
  • 예 2:

  • 입력: ransomNote = "aa", 잡지 = "ab"
    출력: 거짓
  • 예 3:

  • 입력: ransomNote = "aa", 잡지 = "aab"
    출력: 참
  • 제약 조건:
  • 1 <= ransomNote.length, magazine.length <= 105
  • ransomNotemagazine 영문 소문자로 구성됩니다.

  • 내 솔루션


  • 알고리즘

  • >>determine if ransomNote can be constructed from magzine
      set lengthr to length of ransomNote
      set lengthm to length of magzine
      if lengthr>lengthm:
          return false
      else:
          for each char in ransomnote:
              if char appear in magazine:
                  remove char in ransomenote
                  remove char in magazine
                  if lengthr equal to 0:
                      return True
          else:
            return False
    



  • 핵심
  • 두 문자열
  • 의 차이에 따라 질문을 대/소문자로 구분해야 합니다.
  • 몸값 길이가 탄창 길이보다 큰 경우
  • magzine이 ransomNote
  • 를 작성하기에 충분한 단어를 가질 수 있는 방법이 없습니다.


  • 코드

  • class Solution:  
        def canConstruct(self,ransomNote: str, magazine: str) -> bool:  
            lenngthr = len(ransomNote)  
            lenngthm = len(magazine)  
            if lenngthr>lenngthm:  
                return  False
            # lenngthr<=lenngthm  
            else:  
                for char in ransomNote:  
                    if char in magazine:
                        # remove that char from both string  
                        magazine=magazine.replace(char,"",1)  
                        ransomNote=ransomNote.replace(char,"",1)
                        # This mean the whole string can be found on magzine  
                        if len(ransomNote) == 0:  
                            return True  
                # if ransomNote has not reduce to an empty string
                else:  
                    return False
    
    


    기타 솔루션




    class Solution:  
        def canConstruct(self, ransomNote: str, magazine: str) -> bool:  
            magazine_dict = {}
            # constuct a dict with uniques as key and its occurance as value  
            for char in magazine:  
                if char not in magazine_dict:  
                    magazine_dict[char] = 1  
                else:  
                    magazine_dict[char] += 1  
            for char in ransomNote:  
                if char not in magazine_dict or magazine_dict[char] == 0:  
                    return False  
                else:  
                    magazine_dict[char] -= 1
            # all char checked to be found on magazine_dict  
            return True
    


    내 반성


  • 한 그룹이 다른 그룹에 속하는지 확인할 때 사전을 사용하는 것이 더 빠르다는 것을 다른 사람들로부터 배웠습니다.
  • 솔루션이 별도의 함수가 아닌 클래스 내에서 구성되어야 하는 이유를 이해할 수 없습니다.

  • 신용 거래



    챌린지 찾기leet code 383

    좋은 웹페이지 즐겨찾기