zoukankan      html  css  js  c++  java
  • [LeetCode] 821. Shortest Distance to a Character

    Given a string s and a character c that occurs in s, return an array of integers answer where answer.length == s.length and answer[i] is the shortest distance from s[i] to the character c in s.

    Example 1:

    Input: s = "loveleetcode", c = "e"
    Output: [3,2,1,0,1,0,0,1,2,2,1,0]
    

    Example 2:

    Input: s = "aaab", c = "b"
    Output: [3,2,1,0]

    Constraints:

    • 1 <= s.length <= 104
    • s[i] and c are lowercase English letters.
    • c occurs at least once in s.

    字符的最短距离。

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

    我给出一个比较常规的思路。首先我们遍历一次input字符串,用hashmap记录每一个C的位置。第二遍遍历字符串的时候,对于每一个不是C的字母,我们比较一下当前这个字母的index和每一个字母C的index,找到其中的最小值。

    时间O(n^2)

    空间O(n)

    Java实现

     1 class Solution {
     2     public int[] shortestToChar(String s, char c) {
     3         int len = s.length();
     4         HashMap<Character, List<Integer>> map = new HashMap<>();
     5         List<Integer> list = new ArrayList<>();
     6         // mark the index of all the Cs
     7         for (int i = 0; i < len; i++) {
     8             if (s.charAt(i) == c) {
     9                 list.add(i);
    10             }
    11         }
    12         map.put(c, list);
    13 
    14         int[] res = new int[len];
    15         for (int i = 0; i < len; i++) {
    16             if (s.charAt(i) != c) {
    17                 int min = Integer.MAX_VALUE;
    18                 for (int index : map.get(c)) {
    19                     min = Math.min(min, Math.abs(index - i));
    20                 }
    21                 res[i] = min;
    22             } else if (s.charAt(i) == c) {
    23                 res[i] = 0;
    24             }
    25         }
    26         return res;
    27     }
    28 }

    LeetCode 题目总结

  • 相关阅读:
    session和cookie
    数据库备份
    使用pip安装.whl文件时出现is not a supported wheel on this platform的解决办法
    multiprocessing模块
    threading模块
    python中多线程相关
    python中实现单例模式
    Flask-SQLAlchemy相关与Flask-Migrate相关
    redis模块
    Flask-Login中装饰器@login_manager.user_loader的作用及原理
  • 原文地址:https://www.cnblogs.com/cnoodle/p/14387450.html
Copyright © 2011-2022 走看看