Leetcode-PHP题解D49-821-Shortest-Distance-to-a-Character

38次阅读

共计 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) 资助。

正文完
 0