8.14划分字母区间(LC763-M)(附.length,.length(),.size()使用原理)

8.14划分字母区间(LC763-M)(附.length,.length(),.size()使用原理)_第1张图片

算法:

在遍历的过程中相当于是要找每一个字母的边界,如果找到之前遍历过的所有字母的最远边界,说明这个边界就是分割点了

此时前面出现过所有字母,最远也就到这个边界了。

步骤:

  1. 统计每一个字符最后出现的位置
  2. 从头遍历字符,
  3. 并更新字符的最远出现下标,
  4. 如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点

8.14划分字母区间(LC763-M)(附.length,.length(),.size()使用原理)_第2张图片

正确代码:

class Solution {
    public List partitionLabels(String s) {
        LinkedList result = new LinkedList<>();
        char[] chars = s.toCharArray();
        int[] location = new int[26];
        int index = 0;
        int last = -1;
        //统计每个字母出现的位置(对应的索引值)
        for (int i=0; i < chars.length;i++){
            location[chars[i]-'a'] = i;//记录每个字母最后出现的索引值
        }
        for (int i=0; i < chars.length;i++){
            //更新字符的最远出现下标
            index = Math.max(index,location[chars[i]-'a']);
            //如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点
            if (index == i){
                result.add(index-last);
                last = i;
            }
        }
        return result;


    }
}

注意:

1.LinkedList result = new LinkedList<>(); 要写Integer,不能写int!

在 Java 中,`Integer` 是一个类,而 `int` 是一个原始数据类型。如果想要创建一个存储整数的链表,需要使用 `Integer` 而不是 `int`这是因为泛型不支持使用原始数据类型。

2.char[] chars = s.toCharArray(); char[]      c要小写!

3.chars.length,不能写chars.length()

(1)对于数组(如 `int[]``char[]` 等),应该使用 `.length` 来获取数组的长度,因为数组是一个对象,它具有一个公共字段来存储其长度。(属性)
int[] numbers = {1, 2, 3, 4, 5};  
int length = numbers.length;
(2)对于字符串(如 `String` 对象),应该使用 `.length()` 方法来获取字符串的长度,因为字符串是一个对象,它具有一个 `length()` 方法来返回其字符序列的长度。(方法)
String str = "Hello, World!";  
int length = str.length();  
(3)`.size()` 方法通常用于集合类(如 `List``Set``Map` 等),以获取它们所包含元素的数量。

举例来说,对于 `ArrayList``LinkedList``HashSet``TreeSet` 等集合类,你应该使用 `.size()` 方法来获取它们所包含元素的数量。

ArrayList list = new ArrayList<>();  
int size = list.size();  

另外,对于 `Map` 接口的实现类(如 `HashMap``TreeMap` 等),也可以使用 `.size()` 方法来获取它们所包含的键值对的数量。

HashMap map = new HashMap<>();  
int size = map.size();  

时间空间复杂度:

  • 时间复杂度:O(n)
  • 空间复杂度:O(1),使用的hash数组是固定大小

你可能感兴趣的:(#,8.贪心算法,算法)