力扣821. 字符的最短距离Java

简介: 力扣821. 字符的最短距离Java

题目

给你一个字符串 s 和一个字符 c ,且 c 是 s 中出现过的字符。

返回一个整数数组 answer ,其中 answer.length == s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。

两个下标 i 和 j 之间的 距离 为 abs(i - j) ,其中 abs 是绝对值函数。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/shortest-distance-to-a-character

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

image.png

代码

public class Solution {

   public int[] shortestToChar(String s, char c) {

       int left = s.length();

       int right = s.indexOf(c);

       int[] distances = new int[s.length()];

       char[] chars = s.toCharArray();

       for (int i = 0; i < chars.length; i++) {

           distances[i] = Math.min(Math.abs(i - left), Math.abs(right - i));

           if (i == right) {

               left = right;

               right = s.indexOf(c, left + 1);

           }

       }

       return distances;

   }

}

相关文章
|
1天前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
74 60
|
3月前
|
存储 算法
Leetcode第三题(无重复字符的最长子串)
这篇文章介绍了解决LeetCode第三题“无重复字符的最长子串”的算法,使用滑动窗口技术来找出给定字符串中最长的不含重复字符的子串,并提供了详细的代码实现和解释。
116 0
Leetcode第三题(无重复字符的最长子串)
|
3月前
|
算法 Java
LeetCode(一)Java
LeetCode(一)Java
|
5月前
|
算法
LeetCode第3题无重复字符的最长子串
该文章介绍了 LeetCode 第 3 题无重复字符的最长子串的解法,通过使用 HashSet 记录不重复的子元素,以每个字符开头遍历字符串,遇到重复字符则重新计算,最终找到最长子串,同时提到可以考虑使用 HashMap 降低复杂度。
LeetCode第3题无重复字符的最长子串
|
5月前
|
Java
Java——编码GBK的不可映射字符
Java——编码GBK的不可映射字符
54 1
|
5月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
80 2
|
5月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
56 1
|
5月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
73 1
|
5月前
|
存储 Java Apache