• 821. 字符的最短距离『简单』


    题目来源于力扣(LeetCode

    一、题目

    821. 字符的最短距离

    说明:

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

    二、解题思路

    1. 定义两个数组,分别用于记录正序与倒序遍历字符串 S 时,各元素与字符元素 C 之间的距离

    2. 最后将两个数组进行比较,取最小值

    三、代码实现

    public static int[] shortestToChar(String S, char C) {
        int[] ascArr = new int[S.length()];
        int[] descArr = new int[S.length()];
    
        char[] sarr = S.toCharArray();
        // 记录元素与 C 元素的距离,初始值设大值,为数组长度
        int count = sarr.length;
    
        for (int i = 0; i < sarr.length; i++) {
            if (sarr[i] == C) {
                ascArr[i] = 0;
                // 目标元素出现后,count开始为零,其后的排序为1,2,3...
                count = 0;
            } else {
                ascArr[i] = ++count;
            }
        }
    
        count = sarr.length;
        for (int i = sarr.length - 1; i >= 0; i--) {
            if (sarr[i] == C) {
                descArr[i] = 0;
                count = 0;
            } else {
                descArr[i] = ++count;
            }
        }
        // 取两个数组中元素小的值
        for (int i = 0; i < ascArr.length; i++) {
            ascArr[i] = Math.min(ascArr[i], descArr[i]);
        }
        return ascArr;
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String S = "loveleetcode";
        char C = 'e';  // output: {3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0}
    
        int[] result = shortestToChar(S, C);
        System.out.println(Arrays.toString(result));
    }
    
  • 相关阅读:
    SVG的引入历程
    Webstorm的常用快捷键
    TypeScript
    Vue Router
    ISO8601
    html5语义化
    删除已有的 HTML 元素
    with(){}方法
    Jquery学习笔记
    css权值问题
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13227498.html
Copyright © 2020-2023  润新知