力扣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;

   }

}

相关文章
|
6月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
185 15
|
11月前
|
存储 算法
Leetcode第三题(无重复字符的最长子串)
这篇文章介绍了解决LeetCode第三题“无重复字符的最长子串”的算法,使用滑动窗口技术来找出给定字符串中最长的不含重复字符的子串,并提供了详细的代码实现和解释。
546 0
Leetcode第三题(无重复字符的最长子串)
|
11月前
|
算法 Java
LeetCode(一)Java
LeetCode(一)Java
125 0
|
存储 Java Apache
LeetCode第3题无重复字符的最长子串
该文章介绍了 LeetCode 第 3 题无重复字符的最长子串的解法,通过使用 HashSet 记录不重复的子元素,以每个字符开头遍历字符串,遇到重复字符则重新计算,最终找到最长子串,同时提到可以考虑使用 HashMap 降低复杂度。
LeetCode第3题无重复字符的最长子串
|
Java
Java——编码GBK的不可映射字符
Java——编码GBK的不可映射字符
228 1
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
148 2
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
151 1
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
170 1

热门文章

最新文章