8.19 - hard - 70

2017-08-20  本文已影响0人  健时总向乱中忙

336. Palindrome Pairs

基本想出来是怎么做,只是一上来就想去优化,结果想的有点乱,其实最好的方法是先去实验双层循环,然后再去想着优化(利用hash),一开始就去想实在太乱了。

class Solution(object):
    def palindromePairs(self, words):
        """
        :type words: List[str]
        :rtype: List[List[int]]
        """
        d, res = dict([(w[::-1], i) for i, w in enumerate(words)]), []

        for i, w in enumerate(words):
            # 对于每一个word
            for j in xrange(len(w)+1):
                prefix, postfix = w[:j], w[j:]
                # 情况1:prefix存在,比如说 abcdad 如果abc存在于d里也就是cba存在,而且dad是valid
                if prefix in d and i != d[prefix] and postfix == postfix[::-1]:
                    res.append([i, d[prefix]])
                # 情况2: 后缀在d里,比如说abacde cde在d里,也就是edc存在,然后前缀是循环的
                if j>0 and postfix in d and i != d[postfix] and prefix == prefix[::-1]:
                    res.append([d[postfix], i])
        return res 
上一篇下一篇

猜你喜欢

热点阅读