当前位置: 首页 > news >正文

算法-计算字符的最短距离

力扣题目:821. 字符的最短距离 - 力扣(LeetCode)

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

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

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

示例 1:

输入:s = "loveleetcode", c = "e"
输出:[3,2,1,0,1,0,0,1,2,2,1,0]
解释:字符 'e' 出现在下标 3、5、6 和 11 处(下标从 0 开始计数)。
距下标 0 最近的 'e' 出现在下标 3 ,所以距离为 abs(0 - 3) = 3 。
距下标 1 最近的 'e' 出现在下标 3 ,所以距离为 abs(1 - 3) = 2 。
对于下标 4 ,出现在下标 3 和下标 5 处的 'e' 都离它最近,但距离是一样的 abs(4 - 3) == abs(4 - 5) = 1 。
距下标 8 最近的 'e' 出现在下标 6 ,所以距离为 abs(8 - 6) = 2 。

示例 2:

输入:s = "aaab", c = "b"
输出:[3,2,1,0]

提示:

  • 1 <= s.length <= 10^4
  • s[i]c 均为小写英文字母
  • 题目数据保证 cs 中至少出现一次

算法如下:

class Solution {
 public int[] shortestToChar(String s, char c) {
        //存储距离
        int [] a=new int[s.length()];
        //字符串个数
        int L=s.length();
        //从第一个位置开始计算距离
        for(int i=0;i<L;i++)
        {
            //双指针前后同时找,要最短的。
            int low=i;
            int high=i;
            //双向查找谁先找着就停止
            while(low>=0||high<=L-1)
            {
                //小的
                if(low>=0&&s.charAt(low)==c)
                {
                    a[i]=i-low;
                    break;
                }
                //大的
                if(high<=L-1&&s.charAt(high)==c)
                {
                    a[i]=high-i;
                    break;
                }
                low--;
                high++;
            }

        }
        return a;
    }
}

相关文章:

  • 计算机毕业设计PySpark+hive招聘推荐系统 职位用户画像推荐系统 招聘数据分析 招聘爬虫 数据仓库 Django Vue.js Hadoop
  • 基于微型5G网关的石化厂区巡检机器人应用
  • -bash:/usr/bin/rm: Argument list too long 解决办法
  • Swagger2 Knife4jConfig 配置,父子项目swagger扫描多个子模块中的Controller生成接口文档:
  • sward简介与安装
  • 小厂面(又是依托)
  • AWK系统学习指南:从文本处理到数据分析的终极武器 实战
  • 动态DNS神器nip.io使用指南:快速实现域名与IP的动态映射--告别配置本地hosts
  • Go 语言里中的堆与栈
  • LabVIEW用户界面(UI)和用户体验(UX)设计
  • 如何本地部署DeepSeek
  • HTML之JavaScript运算符
  • macOS部署DeepSeek-r1
  • oracle使用动态sql将多层级组织展平
  • C++自研游戏引擎-碰撞检测组件-八叉树AABB检测算法实现
  • 企业文件安全:零信任架构下的文件访问控制
  • 深度学习|表示学习|Instance Normalization 全面总结|26
  • 网络安全架构师怎么考 网络安全 架构
  • 在Ubuntu中安装Docker并配置国内镜像
  • PHP高效、轻量级表格数据处理库 OpenSpout ,很好用
  • 做淘宝网站报告/排名nba
  • 模板性网站建设/搜索引擎优化的作用是什么
  • 上海网站制作工作室/石家庄网站建设就找
  • 食品包装设计用什么软件/画质优化app下载
  • 一流的做pc端网站/郑州企业网站seo
  • wordpress 宠物/商丘seo排名