给定一个字符串 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
中的所有字母均为小写字母。
这是第一次写的
S = "loveleetcode"
C = 'e'
list1 = []
list3 = []
list5 = []
count = 0
for i in S:
list2 = (count,i)
list1.append(list2)
if list1[count][1] == C:
list3.append(list1[count][0])
count += 1
for j in range(len(S)):
list4 = []
for e_num in list3:
d = abs(j - e_num)
list4.append(d)
d1 = min(list4)
list5.append(d1)
print(list5)
这是优化之后的,优化之路漫漫长
class Solution:
def shortestToChar(self, S, C):
"""
:type S: str
:type C: str
:rtype: List[int]
"""
list1 = []
for i in range(len(S)):
left, right = S[i - len(S)::-1].find(C), S[i:].find(C)
if left == -1:
left = 10000
if right == -1:
right = 10000
list1.append(min(left, right))
return list1
s1 = Solution()
print(s1.shortestToChar("loveleetcode", 'e'))