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

【Hot100】LeetCode—763. 划分字母区间

目录

  • 1- 思路
    • 哈希表 + 双指针
  • 2- 实现
    • 763. 划分字母区间——题解思路
  • 3- ACM 实现


  • 原题链接:763. 划分字母区间

1- 思路

哈希表 + 双指针

  • ① 找到元素最远的出现位置:哈希表
  • ② 根据最远出现位置,判断区间的分界线:双指针

实现

  • 1- 定义一个哈希数组,判断最远出现的位置: int[] hash = new int [27]
    • 遍历字符串,记录最远出现位置
  • 2- 分割点
    • 利用数组,收集结果
    • int left = 0; int right = 0; 记录左右区间范围
    • right = Math.max(right,hash[s[i] - 'a');
      • if( i == right ) { res.push(right - left +1); left = i+1; }

思路

  • ① 先通过遍历字符串,统计最远出现位置
  • ② 定义 left 和 right 指针,每次依据 当前位置的最远出现位置,更新 right = Math.max(right,hash[s[i] - 'a');
    • 如果 i == right ,此时收集结果

2- 实现

763. 划分字母区间——题解思路

在这里插入图片描述

class Solution {public List<Integer> partitionLabels(String s) {int[] hash = new int[26];for(int i = 0 ; i < s.length() ; i++){hash[s.charAt(i) - 'a'] = i;}List<Integer> res = new ArrayList<>();// 定义 left 和 right 判断最远位置int left = 0;int right = 0;for(int i = 0 ; i < s.length() ; i++){right = Math.max(right,hash[s.charAt(i)-'a']);if(i==right){res.add(right-left+1);left = right+1;}}return res;}
}

3- ACM 实现

public class maxInterval {public static List<Integer> maxL (String str){// 哈希表int len = str.length();int[] hash = new int[26];for(int i = 0 ; i <  len;i++){hash[str.charAt(i) -'a'] = i;}// 2. 找到最远区间分割  双指针List<Integer> res = new ArrayList<>();int left = 0;int right = 0;for(int i = 0 ; i < len;i++ ){right = Math.max(right,hash[str.charAt(i)-'a']);if(i==right){res.add(right-left+1);left = right+1;}}return res;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);String input = sc.nextLine();System.out.println("结果是"+maxL(input).toString());}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 线程的四种操作
  • python内置模块datetime.datetime类详细介绍
  • 2024.9.8
  • Android Framework(四)WMS-窗口显示流程——窗口创建与添加
  • 搭建一个本地 SMTP 服务器
  • 08-图8 How Long Does It Take(C)
  • 移动应用门户实现的技术方案
  • 用了虚拟机后,本机摄像头打不开了(联想电脑thinkpad)
  • [数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别
  • 2024国赛数学建模B题完整分析参考论文38页(含模型和可运行代码)
  • 家里有猫用宠物空气净化器有用吗?希喂、米家、有哈哪款更好
  • 在springboot中如何使用Jetty替换Tomcat
  • 同样数据源走RTMP播放延迟低还是RTSP低?
  • Redis的设计哲学和实现方式
  • Maven创建项目中的groupId, artifactId, 和 version的意思
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【RocksDB】TransactionDB源码分析
  • Brief introduction of how to 'Call, Apply and Bind'
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • nginx 配置多 域名 + 多 https
  • React-redux的原理以及使用
  • Service Worker
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 电商搜索引擎的架构设计和性能优化
  • 码农张的Bug人生 - 初来乍到
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用权重正则化较少模型过拟合
  • 首页查询功能的一次实现过程
  • 王永庆:技术创新改变教育未来
  • 温故知新之javascript面向对象
  • 项目管理碎碎念系列之一:干系人管理
  • 一道闭包题引发的思考
  • 走向全栈之MongoDB的使用
  • Java总结 - String - 这篇请使劲喷我
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • ( 10 )MySQL中的外键
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2)空速传感器
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (Note)C++中的继承方式
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (void) (_x == _y)的作用
  • (zhuan) 一些RL的文献(及笔记)
  • (第30天)二叉树阶段总结
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net Web项目创建比较不错的参考文章