您的位置:首页 > 编程语言 > Python开发

LeetCode 821.字符的最短距离(python)

2019-03-23 16:31 766 查看

题目链接

题目描述:
给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。

示例 1:

输入: S = “loveleetcode”, C = ‘e’
输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]
说明:

字符串 S 的长度范围为 [1, 10000]。
C 是一个单字符,且保证是字符串 S 里的字符。
S 和 C 中的所有字母均为小写字母。

解题思路:
先将字符串中C表示的字符的位置记录下来,然后计算字符串中每一个字符与所有字符C的距离,并求出最小距离即可。

p.s.别人的做法,用i表示当前字符,s[i:].find(c)表示右边的最近距离,s[i-len(s)::-1].find(c)表示左边的最近距离,取两者最小值,若当前字符左边或右边没有字符C,会返回-1,将-1设为一个较大的数即可。

class Solution:
def shortestToChar(self, S: str, C: str) -> List[int]:
loc=[]
dis=[]
for i in range(0,len(S)):
if S[i]==C:
loc.append(i)#记录e在列表中的位置
for i in range(0,len(S)):
t=[]
for j in loc:
t.append(abs(i-j))#计算每一个字符和所有C的距离
dis.append(min(t))#将最小距离添加到结果数组中
return dis
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: