2023年6月9日 星期五

6/9 每日一題(兩種字串的規則是否相同)

 Given a pattern and a string s, find if s follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in s.

 

Example 1:

Input: pattern = "abba", s = "dog cat cat dog"
Output: true

Example 2:

Input: pattern = "abba", s = "dog cat cat fish"
Output: false

Example 3:

Input: pattern = "aaaa", s = "dog cat cat dog"
Output: false

 

Constraints:

  • 1 <= pattern.length <= 300
  • pattern contains only lower-case English letters.
  • 1 <= s.length <= 3000
  • s contains only lowercase English letters and spaces ' '.
  • s does not contain any leading or trailing spaces.
  • All the words in s are separated by a single space.

class Solution:
    def wordPattern(self, pattern: str, s: str) -> bool:       
           
       
        s_list=s.split() #拆成list

        if len(pattern) != len(s_list):
            return False
       

        pattern_list=[]
        check_dict={}
       

        for i in pattern:
            pattern_list.append(i)
       
        for i,j in zip(pattern_list,s_list):

            if i in check_dict:  
            #如果key在字典中,但value不同就表示規則不同
                if check_dict[i] != j:
                    return False
               
           
           
            else:
                if any(j in i for i in check_dict.values()):
                #避免不同的key配賦同樣的value
                    return False

                else:
                    check_dict[i]=j
       

        return True
------------------------參考解答

檢查映射 可以使用字典 會提執行升效率
class Solution:
    def wordPattern(self, pattern: str, s: str) -> bool:
        
            
        
        s_list=s.split() #拆成list
        if len(pattern) != len(s_list): 
            return False
        

        patter_list=[]
        check_dict={}
        value_set=set() #檢查映射
        

        for i in pattern:
            patter_list.append(i)
        
        for i,j in zip(patter_list,s_list):

            if i in check_dict:  
            #如果key在字典中,但value不同就表示規則不同
                if check_dict[i] != j:
                    return False             
            
            else:
                if j in value_set:
                #避免不同的key配賦同樣的value
                    return False

                else:
                    check_dict[i]=j
                    value_set.add(j)
        

        return True





標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁