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


题目


1- 思路

思路
目标:同样的字母 字符串尽可能的长

  • 问1:怎么确定字母数 ——> 哈希表
  • 问2:怎么让字符尽可能的长?——> 统计每个字符出现的最远位置,根据单个字符的最远出现位置,判断字符串的最远出现位置
    • 如果满足 字符串中所有字符的最远出现位置 <= 当前字符串的最远出现位置,这个字符串就是最长的

2- 实现

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

在这里插入图片描述

class Solution {
    
    List<Integer> res = new ArrayList<>();
    public List<Integer> partitionLabels(String s) {
        // 1.定义 hash
        int[] hash = new int[26];
        // 2. 求单个字母最远距离
        for(int i = 0 ; i < s.length();i++){
            hash[s.charAt(i) - 'a'] = i;
        }

        int left = 0;
        int right = 0;
        // 3. 实现逻辑
        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 longestSub {

    static List<Integer> res = new ArrayList<>();
    public static List<Integer> partitionLabels(String str){
        // 1. 定义 hash
        int len = str.length();
        int[] hash = new int[len];
        // 2. 求单个字符最远
        for(int i = 0 ; i < len;i++){
            hash[str.charAt(i)-'a'] = i;
        }

        int left = 0;
        int right = 0;
        // 3. 实现逻辑
        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 str = sc.nextLine();
        List<Integer> forRes = partitionLabels(str);
        System.out.println(forRes.toString());
    }
}

相关推荐

  1. 【贪心算法】Leetcode 763. 划分字母区间【中等】

    2024-07-19 04:28:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 04:28:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 04:28:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 04:28:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 04:28:03       69 阅读

热门阅读

  1. 微服务

    微服务

    2024-07-19 04:28:03      17 阅读
  2. perf工具学习材料

    2024-07-19 04:28:03       17 阅读
  3. opencv—常用函数学习_“干货“_3

    2024-07-19 04:28:03       16 阅读
  4. k8s学习——升级后的k8s使用私有harbor仓库

    2024-07-19 04:28:03       25 阅读
  5. LVS的DR模式

    2024-07-19 04:28:03       19 阅读
  6. 前端常用工具库

    2024-07-19 04:28:03       19 阅读
  7. 智能灯光的工作原理

    2024-07-19 04:28:03       19 阅读
  8. 安全防御:防火墙基本模块

    2024-07-19 04:28:03       21 阅读
  9. Qt区分鼠标按下时移动的是哪个多边形

    2024-07-19 04:28:03       19 阅读
  10. Unlink

    Unlink

    2024-07-19 04:28:03      20 阅读
  11. 扩展你的App:Xcode中App Extensions的深度指南

    2024-07-19 04:28:03       25 阅读
  12. 计算机算法思想

    2024-07-19 04:28:03       13 阅读