java算法题解Leetcode763划分字母区间示例

 更新时间:2023年01月09日 10:28:10   作者:itbird01  
这篇文章主要为大家介绍了java算法题解Leetcode763划分字母区间示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目

763. 划分字母区间

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。

示例: 输入:S = "ababcbacadefegdehijhklij" 输出:[9,7,8] 解释: 划分结果为 "ababcbaca", "defegde", "hijhklij"。 每个字母最多出现在一个片段中。 像 "ababcbacadefegde", "hijhklij" 的划分是错误的,因为划分的片段数较少。

提示: S的长度在[1, 500]之间。 S只包含小写字母 'a' 到 'z' 。

解题思路

1)解决问题的根本在于,找到一个区间,这个区间内的字符,没有在其他区间出现过

2)那我们就想找到这个区间的开始位置、结束位置,针对这个区间的每个字符,如果字符出现的lastIndex大于当前统计到的stop,则stop更新为此边界,直到遍历到这个stop边界,证明此次遍历,start->stop这个区间内,已经包含所有重复字符

import java.util.ArrayList;
import java.util.List;
class Solution {
	public List<Integer> partitionLabels(String s) {
		List<Integer> res = new ArrayList<Integer>();
		if (s == null || s.length() == 0) {
			return res;
		}
		int start = 0, stop = 0;
		for (int i = start; i < s.length(); i++) {
			if (s.lastIndexOf(s.charAt(i)) > stop) {
				stop = s.lastIndexOf(s.charAt(i));
			}
			if (i == stop) {
				res.add(stop - start + 1);
				start = i + 1;
			}
		}
		return res;
	}
}

以上就是java算法题解Leetcode763划分字母区间示例的详细内容,更多关于java算法划分字母区间的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot中swagger的使用

    SpringBoot中swagger的使用

    这篇文章主要介绍了SpringBoot中swagger的使用,文中有非常详细的代码示例,对正在学习swagger的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • idea数据库驱动下载失败的问题及解决

    idea数据库驱动下载失败的问题及解决

    这篇文章主要介绍了idea数据库驱动下载失败的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • SpringBoot基于过滤器和内存实现重复请求拦截功能

    SpringBoot基于过滤器和内存实现重复请求拦截功能

    这篇文章主要介绍了SpringBoot基于过滤器和内存实现重复请求拦截,这里我们使用过滤器的方式对进入服务器的请求进行过滤操作,实现对相同客户端请求同一个接口的过滤,需要的朋友可以参考下
    2023-01-01
  • SpringBoot+hutool实现图片验证码

    SpringBoot+hutool实现图片验证码

    本文主要介绍了SpringBoot+hutool实现图片验证码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • springboot依赖冲突问题及解决过程

    springboot依赖冲突问题及解决过程

    新搭了一个springboot 2.3.7.RELASE的框架,在集成mysql,tkMapper,mybatis的过程中,启动报错,怎么解决这个问题呢,下面小编给大家带来了springboot依赖冲突问题及解决过程,一起看看吧
    2021-09-09
  • 解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题

    解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题

    这篇文章主要介绍了解决使用mybatis-plus时,生成的SQL大写变小写加下划线问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Spring Boot 中的 Spring Cloud Feign的原理解析

    Spring Boot 中的 Spring Cloud Feign的原

    Spring Cloud Feign 是 Spring Cloud 中的一个组件,它可以帮助我们实现声明式的 REST 客户,这篇文章主要介绍了Spring Boot 中的 Spring Cloud Feign,需要的朋友可以参考下
    2023-07-07
  • Java设计模式中的装饰器模式简析

    Java设计模式中的装饰器模式简析

    这篇文章主要介绍了Java设计模式中的装饰器模式简析,装饰模式能够实现动态的为对象添加功能,是从一个对象外部来给对象添加功能,通常给对象添加功能,要么直接修改对象添加相应的功能,要么派生对应的子类来扩展,抑或是使用对象组合的方式,需要的朋友可以参考下
    2023-12-12
  • 解决redisTemplate中leftPushAll隐性bug的问题

    解决redisTemplate中leftPushAll隐性bug的问题

    这篇文章主要介绍了解决redisTemplate中leftPushAll隐性bug的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java class文件格式之数据类型_动力节点Java学院整理

    Java class文件格式之数据类型_动力节点Java学院整理

    这篇文章主要介绍了Java class文件格式之数据类型的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论