LeetCode-Algorithms-[Easy]821. 字符的最短距离

    技术2022-07-11  123

    给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。

    示例 1:

    输入: S = “loveleetcode”, C = ‘e’ 输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]

    说明:

    字符串 S 的长度范围为 [1, 10000]。 C 是一个单字符,且保证是字符串 S 里的字符。 S 和 C 中的所有字母均为小写字母。

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shortest-distance-to-a-character 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


    前向与后向两个方向分别遍历一次

    public int[] shortestToChar(String S, char C) { int n = S.length(); int[] ans = new int[n]; int indexOfC = -n; char[] chars = S.toCharArray(); for (int i = 0; i < n; i++) { if (chars[i] == C) { indexOfC = i; } ans[i] = i - indexOfC; } indexOfC = 2 * n; for (int i = n - 1; i >= 0; i--) { if (chars[i] == C) { indexOfC = i; } ans[i] = Math.min(indexOfC - i, ans[i]); } return ans; }
    Processed: 0.015, SQL: 9