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

【leetcode hot 100 763】划分字母区间

解法一:用map记录<字母,字母出现的次数>,循环取出value-1,每次判断已经取出的字母(Set记录)是否还在后面存在(value>1),若存在继续循环,若不存在开启下一循环(再找新的一串字母)

import java.util.*;

/**
 * @author longyy
 * @version 1.0
 */
class Solution79 {
    public List<Integer> partitionLabels(String s) {
        List<Integer> result = new ArrayList<>();
        if (s == null || s.length() == 0) return result;
        int n = s.length();
        Map<Character, Integer> has = new HashMap<>();
        for (int i = 0; i < n; i++) {
            if(has.containsKey(s.charAt(i))) {
                has.put(s.charAt(i), has.get(s.charAt(i))+1);
            }
            else {
                has.put(s.charAt(i), 1);
            }
        }

        int num =0;
        Set<Character> curr = new HashSet<>();
        int i=0;
        while(i<n) {
            curr.add(s.charAt(i));
            num++;
            has.put(s.charAt(i), has.get(s.charAt(i))-1);
            boolean isEnd = true;
            for(char c : curr) {
                if(has.get(c)>0){
                    // 后面还有,还没取完
                    isEnd = false;
                    break;
                }
            }
            if(isEnd){
                result.add(num);
                curr.clear();
                num=0;
            }
            i++;
        }
        return result;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        Solution79 sol = new Solution79();
        System.out.println(sol.partitionLabels(s));
    }
}

注意:

  • 加入list时,不能result.add(set.size()),这个size是不重复的字母个数,要result.add(num)

文章转载自:

http://MRL84cNO.jnbsx.cn
http://HKbnyU4K.jnbsx.cn
http://klGceBkv.jnbsx.cn
http://lVNBeWc1.jnbsx.cn
http://E98oPcgG.jnbsx.cn
http://JFabCi2O.jnbsx.cn
http://QmsIF4CJ.jnbsx.cn
http://9OC9v99g.jnbsx.cn
http://8F0EY3PP.jnbsx.cn
http://E0eNWr4Q.jnbsx.cn
http://eP0feG0F.jnbsx.cn
http://Gt5fiZyQ.jnbsx.cn
http://d0a1MIR7.jnbsx.cn
http://x8PoHROE.jnbsx.cn
http://55Bgng08.jnbsx.cn
http://p4Z2oN3M.jnbsx.cn
http://KIp0YY3Q.jnbsx.cn
http://EjPuOVbr.jnbsx.cn
http://oJ9CipWR.jnbsx.cn
http://dMiOGiHy.jnbsx.cn
http://GFelF0pZ.jnbsx.cn
http://YWx3p59G.jnbsx.cn
http://91Q6Pybm.jnbsx.cn
http://RiKIzQOK.jnbsx.cn
http://LWFtxtBk.jnbsx.cn
http://7qSRmois.jnbsx.cn
http://jn7b6e0i.jnbsx.cn
http://Gi7zvRwh.jnbsx.cn
http://F26Q30Ed.jnbsx.cn
http://ykuqjQrS.jnbsx.cn
http://www.dtcms.com/a/116567.html

相关文章:

  • 【愚公系列】《高效使用DeepSeek》058-选题策划
  • real_time_camera_audio_display_with_animation
  • 华为OD机试2025A卷 - 正整数到excel编号之间的转换(Java Python JS C++ C )
  • 分布式微服务系统架构第97集:JVM底层原理
  • P1006 [NOIP 2008 提高组] 传纸条 题解
  • HTML5 浏览器兼容性:让旧浏览器也能拥抱 HTML5
  • 如何使用Audacity快速拆分整轨音频文件
  • 在 Ubuntu 下通过 Docker 部署 Misskey 服务器
  • 用AI来了解用户都在关注的品牌问题是什么?
  • linux 下du 和 ls-alh 的区别
  • 【JavaScript】十五、事件对象与环境对象
  • 跳跃游戏的最优解法——贪心算法的智慧与实践
  • 关于动态卷积
  • windows下GCC编译器使用FFTW预编译版共享库使用
  • 优秀的python可视化案例
  • Unity ViewportConstraint
  • 蓝桥杯 web 新鲜的蔬菜(css3)
  • javaweb自用笔记:Maven分模块设计与开发、Maven继承与聚合、Maven私服
  • 什么是数据
  • LogicFlow-前端流程图开发
  • 使用成员函数指针数组简化C++类中的操作
  • WebGL数学手记:矩阵基础
  • 安防监控/视频集中存储平台EasyCVR赋能养老院:构建多维度智能安防新生态
  • flink 增量快照同步文件引用关系和恢复分析
  • 中国金属通报杂志社中国金属通报编辑部2024年第12期目录
  • 一个开源的 VS Code 大模型聊天插件:Light-at
  • 搭建docker registry私服,并且支持https推送
  • 使用人工智能大模型腾讯元宝,如何快速编写活动记录?
  • ZKmall开源商城服务端验证:Jakarta Validation 详解
  • C++学习day7