当前位置:主页 > java教程 > java算法划分字母区间

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

发布:2023-03-03 17:30:01 59


给网友朋友们带来一篇相关的编程文章,网友苍雨华根据主题投稿了本篇教程内容,涉及到java算法划分字母区间、java LeetCode、java算法划分字母区间相关内容,已被316网友关注,涉猎到的知识点内容可以在下方电子书获得。

java算法划分字母区间

题目

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算法划分字母区间的资料请关注码农之家其它相关文章!


参考资料

相关文章

  • java LeetCode普通字符串模拟题解示例

    发布:2023-04-16

    这篇文章主要为大家介绍了java LeetCode普通字符串模拟题解示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • java LeetCode刷题稍有难度的贪心构造算法

    发布:2023-04-15

    这篇文章主要为大家介绍了java LeetCode刷题稍有难度的贪心构造题解示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


网友讨论