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