821. 字符的最短距离
class Solution:
def shortestToChar(self, s: str, c: str) -> List[int]:
list_c = [i for i in range(len(s)) if s[i] == c]
arr = []
for j in range(len(s)):
arr.append(self.get_abs_minnum(j, list_c))
return arr
def get_abs_minnum(self, first_num:int, li:List):
cur = pow(10, 4)
for v in li:
cur = min(cur, abs(v - first_num))
return cur
class Solution(object):
def shortestToChar(self, S, C):
prev = float('-inf')
arr = []
for i, x in enumerate(S):
if S[i] == C:
prev = i
else:
arr.append(i - prev)
prev = float('inf')
for i in range(len(S) -1, -1, -1):
if S[i] == C:
prev = i
else:
arr.append(min(prev-i, arr[i]))
return arr
s = "abcdefg"
for i, j in enumerate(s):
print(i, j)
结果为:
0 a
1 b
2 c
3 d
4 e
5 f
6 g
--------------------------------------------------
for k in enumerate(s):
print(k)
结果为:
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
(5, 'f')
(6, 'g')
定义无穷大: float('inf')
定义无穷小: float('-inf')
特殊情况:
0*无穷大 or 0*无穷小 结果为nan(不是一个数, 所有和nan的相关计算都无法获取结果)
其它的示例:
float('nan') + 9999999 # nan
float('nan') - 9999999 # nan
float('nan') * 9999999 # nan
0 - 无穷小 -> 无穷大
0 - float('-inf') # float('inf')
s = [1,2,3,4,5]
for i in range(len(s) - 1, -1, -1):
print(s[i])
结果为:
5
4
3
2
1