每日一题——字符的最短距离

简介: 每日一题——字符的最短距离

821. 字符的最短距离

题目描述:

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

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

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

示例1:

输入:s = “loveleetcode”, c = “e”

输出:[3,2,1,0,1,0,0,1,2,2,1,0]

示例2:

输入:s = “aaab”, c = “b”

输出:[3,2,1,0]

思路:

先找出字符串s中所有指定字符,并使用一个切片存储其位置,

开始遍历字符串s,如果是指定字符,向结果切片追加0,否则,遍历所有指定字符,求当前字符到只有指定字符的位置,并取最小值,并追加到结果切片。

题解:

func shortestToChar(s string, c byte) []int {
  ans := make([]int, 0)
  // 存放指定字符 第几个:下标
  cSlice := make([]int, 0)
  for i, ch := range s {
    if byte(ch) == c {
      cSlice = append(cSlice, i)
    }
  }
  for i, ch := range s {
    // 遍历到指定字符,追加0
    if byte(ch) == c {
      ans = append(ans, 0)
    } else {
      dis := math.MaxFloat64
      // 求当前位置到每一个指定字符的位置,取最小
      for _, index := range cSlice {
        dis = math.Min(dis,math.Abs(float64(i-index)))
      }
      ans = append(ans, int(dis))
    }
  }
  return ans
}

提交结果:

相关文章
|
前端开发 Java 关系型数据库
校内评奖评优|基于Springboot+Vue实现高校评优管理系统
校内评奖评优|基于Springboot+Vue实现高校评优管理系统
474 1
校内评奖评优|基于Springboot+Vue实现高校评优管理系统
一个实用的产品分析模型
产品分析要从"用什么方式"、解决了“谁的”“什么问题”三个维度进行分析。
189 0
一个实用的产品分析模型
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
3天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
346 91
|
10天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
832 156
|
3天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
250 156