算法提高之LeetCode刷题LeetCode Python算法

821. Shortest Distance to a Char

2018-07-03  本文已影响0人  fred_33c7

原题网址:https://leetcode.com/problems/shortest-distance-to-a-character/description/
大意:找出一个string中每个字母到给定字母的最短距离(就是该字母的索引值到最近的给定字母的索引值的差的绝对值)

先找出所有给定字母的索引值,然后计算每一个字母的索引值和这些给定字母的索引值的差值,最小值就是最短距离。
例如给定S:"loveleetcode",C:"e",e在S中的索引值就是[3, 5, 6, 11],这样,求出每个数和该数组差值的最小值就是[3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]

def shortestToChar(self, S, C):
        """
        :type S: str
        :type C: str
        :rtype: List[int]
        """
        list_c = []
        for index,item in enumerate(S):
            if C == item:
                list_c.append(index)
        print list_c
        list_return = []
        for index,item in enumerate(S):
            list_dif = []
            for dif in list_c:
                list_dif.append(abs(index - dif))
            list_return.append(min(list_dif))
        return list_return

这样写有个问题,双层for循环很难看,也很复杂。

list_c = []
        for index, item in enumerate(S):
            if C == item:
                list_c.append(index)
        list_return = []
        for index, item in enumerate(S):
            distance = [abs(index - index_list) for index_list in list_c]
            list_return.append(min(distance))
        return list_return

改成这样就很简洁明了

上一篇下一篇

猜你喜欢

热点阅读