共计 635 个字符,预计需要花费 2 分钟才能阅读完成。
D49 821. Shortest Distance to a Character
题目链接
821. Shortest Distance to a Character
题目分析
给定一个字符串 s
和一个字符c
。
返回字符串中每一个字符离给定的字符 c
的最短距离。
思路
先用 array_keys 找到字符 C
在字符串 S
中的位置。
如果当前遍历到的位置是在下一个出现的字符 C
之前,那么直接相减下标即可得到距离。
否则,当当前下标大于上一个出现字符 C
的位置,且存在下一个字符 C
时,距离为两者中最小的那个。
当距离为 0 时,标记下一个要获取的 C
的位置。
最终代码
<?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;
}
}
若觉得本文章对你有用,欢迎用 [爱发电](https://afdian.net/@skys215) 资助。
正文完