821. Shortest Distance to a Characterphp
給定一個字符串s
和一個字符c
。.net
返回字符串中每個字符離給定的字符c
的最短距離。code
先用array_keys找到字符C
在字符串S
中的位置。leetcode
若是當前遍歷到的位置是在下一個出現的字符C
以前,那麼直接相減下標便可獲得距離。字符串
不然,噹噹前下標大於上一個出現字符C
的位置,且存在下一個字符C
時,距離爲二者中最小的那個。
當距離爲0時,標記下一個要獲取的C
的位置。get
<?php class Solution { function shortestToChar($S, $C) { $S = str_split($S); $keys = array_keys($S,$C); $distances = []; $prev = 0; foreach($S as $index => $char){ $dist = abs($keys[$prev] - $index); if($index > $keys[$prev] && isset($keys[$prev+1])){ $dist = min($index-$keys[$prev],$keys[$prev+1]-$index); if($dist == 0){ $prev++; } } $distances[] = $dist; } return $distances; } }
若以爲本文章對你有用,歡迎用愛發電資助。it