力扣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月前
|
JavaScript Java Android开发
在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279
在cmd中运行javac编译java文件报错: 编码GBK的不可映射字符、 非法字符: \65279
19 1
|
18天前
|
Java
JAVA工具类匹配重复或者连续的字符和符号
JAVA工具类匹配重复或者连续的字符和符号
15 2
|
21天前
|
Java Serverless
Java字符个数统计代码
Java字符个数统计代码
27 6
|
28天前
|
算法 Java
[Java·算法·简单] LeetCode 283. 移动零
[Java·算法·简单] LeetCode 283. 移动零
23 2
|
10天前
|
Java API 索引
Java中的字符串与字符操作详解
Java中的字符串与字符操作详解
|
1月前
|
存储 算法 数据可视化
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
|
13天前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
9 0
|
17天前
|
存储 算法 程序员
力扣经典150题第三十一题:无重复字符的最长子串
力扣经典150题第三十一题:无重复字符的最长子串
12 0
|
1月前
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
|
1月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题