Leetcode290. Word Pattern & 205. Isomorphic Strings

136 篇文章 0 订阅

290

Given a pattern and a string str, find if str 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 str.

Examples:
pattern = “abba”, str = “dog cat cat dog” should return true.
pattern = “abba”, str = “dog cat cat fish” should return false.
pattern = “aaaa”, str = “dog cat cat dog” should return false.
pattern = “abba”, str = “dog dog dog dog” should return false.
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

Credits:
Special thanks to @minglotus6 for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

思路:
(1)字符串按空格拆分
(2)hashtable,pattern=”abba”,str=”cat dog dog cat” True
pattern=”abba” str=”cat cat cat cat” False

python代码

class Solution(object):
    def wordPattern(self, pattern, str):
        temp=str.split()
        table={}
        flag=1
        #越界检查
        if len(temp)!=len(pattern):
            return False
        for i in range(len(pattern)):
            table.setdefault(pattern[i],None)
            if table[pattern[i]]==None:
                for k in table:
                    if k!=pattern[i]:
                        if temp[i]==table[k]:
                            return False
                    table[pattern[i]]=temp[i]
            elif temp[i]!=table[pattern[i]]:
                return False
        if flag:
            return True

205

Given two strings s and t, determine if they are isomorphic.

Two strings are isomorphic if the characters in s can be replaced to get t.

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character but a character may map to itself.

For example,
Given “egg”, “add”, return true.

Given “foo”, “bar”, return false.

Given “paper”, “title”, return true.

class Solution(object):
    def isIsomorphic(self, s, t):
        if len(s)!=len(t):
            return False
        table={}
        for i in range(len(s)):
            table.setdefault(s[i],None)
            if table[s[i]]==None:
                for k in table:
                    if k!=s[i]:
                        if t[i]==table[k]:
                            return False
                    table[s[i]]=t[i]
            elif t[i]!=table[s[i]]:
                return False
        return True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值