0
点赞
收藏
分享

微信扫一扫

821. 字符的最短距离

兵部尚输 2022-04-19 阅读 59
leetcode

1.两次遍历

class Solution {
    //遍历两次,一次找 arr[i]距离左边最近的 一次找 arr[i]距离右边最近的
    public int[] shortestToChar(String s, char c) {
        int[] arr = new int[s.length()];
        // 因为一开始 左边 肯定没有 所有把 cindex设为一个很大的负数,这样 i- cindex 就是很大的正数
        for (int i = 0, cindex = -10001; i < s.length(); i++) {
            if (c == s.charAt(i)) {
                cindex = i;
            }
            arr[i] = i - cindex;
        }
        // 从右边找
        for (int i = s.length() - 1, cindex = 10001; i >= 0; i--) {
            if (c == s.charAt(i)) {
                cindex = i;
            }
            //把两边的最小值覆给数组
            arr[i] = Math.min(arr[i], cindex - i);
        }
        return arr;
    }
}
举报

相关推荐

0 条评论