[刷题] LeetCode刷题-String-Python (2)

344. Reverse String

代码:

class Solution:
    def reverseString(self, s):
        """
        :type s: str
        :rtype: str
        """
        return s[::-1]

思路:
基础而已,没啥好说的。

结果:
344. Reverse String

151. Reverse Words in a String

代码:

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        result = ''
        words = s.strip().split()[::-1]
        for i in words:
            result+=i
            result+=' '
        return result.strip()

思路:
基础而已,没啥好说的。

结果:
151. Reverse Words in a String

186.Reverse Words in a String II(需要会员)

代码:

思路:

结果:

345. Reverse Vowels of a String

代码:

class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        result = list(s)
        vowel = 'aeiouAEIOU'
        vowels = {}
        pos = []
        for i in range(len(s)):
            if s[i] in vowel:
                vowels[i] = s[i]
                pos.append(i)
        for i in range(len(pos)):
            result[pos[i]] = vowels[pos[len(pos)-i-1]]
        return ''.join(result)
class Solution(object):
    def reverseVowels(self, s):
        """
        :type s: str
        :rtype: str
        """
        result = list(s)
        vows = set('aeiouAEIOU')
        l, r = 0, len(s) - 1
        while l <= r:
            while l <= r and result[l] not in vows: l += 1
            while l <= r and result[r] not in vows: r -= 1
            if l > r: break
            result[l], result[r] = result[r], result[l]
            l, r = l + 1, r - 1
        return ''.join(result)

思路:
第一思路,先遍历整个字符串获得元音字母所在位置,并用字典记录所对应的字符,在将所有元音字符进行反转即可。由于两遍遍历效率较低,可以采用二分法,从首尾同时寻找元音字符,当左右各找到一个元音字符时,进行调换即可。
注意,string 不支持下标修改操作。

结果:
345. Reverse Vowels of a String

205. Isomorphic Strings

代码:

class Solution:
    def isIsomorphic(self, s, t):
        """
        :type s: str
        :type t: str
        :rtype: bool
        """
        f = {}
        v = set()
        for i in range(len(s)):
            if not s[i] in f:
                if t[i] in v:
                    return False
                f[s[i]] = t[i]
                v.add(t[i])
            if f[s[i]]!=t[i]:
                return False
        return True

思路:
利用 Map 进行映射,利用 Set 保证映射为单射。

结果:
205. Isomorphic Strings

293.Flip Game(需要会员)

代码:

思路:

结果:

294.Flip Game II(需要会员)

代码:

思路:

结果:

290. Word Pattern

代码:

class Solution:
    def wordPattern(self, pattern, s):
        """
        :type pattern: str
        :type str: str
        :rtype: bool
        """
        Words = s.split()
        Map = {}
        Value = set()
        if len(Words)!=len(pattern):
            return False
        for i in range(len(pattern)):
            if not pattern[i] in Map:
                if Words[i] in Value:
                    return False
                Map[pattern[i]] = Words[i]
                Value.add(Words[i])
            else:
                if Map[pattern[i]]!=Words[i]:
                    return False
        return True

思路:
利用 Map 进行映射,利用 Set 保证映射为单射。

结果:
290. Word Pattern

如果你看到了这篇文章的最后,并且觉得有帮助的话,麻烦你花几秒钟时间点个赞,或者受累在评论中指出我的错误。谢谢!

作者信息:
LeetCode:Tao Pu
CSDN:Code_Mart
Github:Bojack-want-drink

你可能感兴趣的:(LeetCode,刷题,LeetCode,LeetCode,刷题日记)