给定一个字符串 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
中的所有字母均为小写字母。
思路:1.左右两个指针,当指针指向了对应的字符时,将标志位设为1
2.在标志位为1的指针下选择最小值
code:
class Solution:
def shortestToChar(self, S: str, C: str) -> List[int]:
length=int(len(S))
distinct=[0]*length
for i in range(0,length):
left=0
right=0
flagl=0
flagr=0
while(i-left>=0):
if S[i-left]==C:
flagl=1
break
left=left+1
while(i+right<length):
if S[i+right]==C:
flagr=1
break
right=right+1
if flagl==1 and flagr==1:
distinct[i]=min(left,right)
elif flagl==1 and flagr==0:
distinct[i]=left
elif flagl==0 and flagr==1:
distinct[i]=right
return distinct