zoukankan      html  css  js  c++  java
  • LeetCode 1525. 字符串的好分割数目

    题目链接

    1525. 字符串的好分割数目

    题目思路

    使用两个数组,记录在第i个位置分割字符串的时候,其[0,i-1]之间出现字符串的种数和[i, s.length()-1]之间出现的字符串种数。然后再使用一次遍历去检查如果分割第i个位置,其左右的大小是否相等即可。
    由于题目输入全部都是小写字符,所以直接开一个boolean数组存字符出现的情况即可。

    代码实现

    class Solution {
        public int numSplits(String s) {
            if(s.length() == 0){
                return 0;
            }
            if(s.length() == 1){
                return 1;
            }
            boolean[] visited = new boolean[26];
            int[] left = new int[s.length()];
            char[] str = s.toCharArray();
            visited[str[0] - 'a'] = true;
            int count = 1;
            for(int i = 1; i < str.length; i++){
                left[i] = count;
                if(!visited[str[i] - 'a']){
                    visited[str[i] - 'a'] = true;
                    count++;
                }
            }
            int[] right = new int[s.length()];
            visited = new boolean[26];
            count = 0;
            for(int i = str.length - 1; i >= 0; i--){
                if(!visited[str[i] - 'a']){
                    visited[str[i] - 'a'] = true;
                    count++;
                }
                right[i] = count;
            }
            int res = 0;
            for(int i = 1; i < str.length; i++){
                if(left[i] == right[i]){
                    res++;
                }
            }
            return res;
        }
    }
    
  • 相关阅读:
    NIO 学习笔记
    Spring Boot 学习笔记
    Java集合框架
    StringBuffer&StringBuilder类
    String 类
    Java 重写 hashCode() 和 equals() 方法
    Java 基本数据类型 && 位运算
    [SequenceFile_1] Hadoop 序列文件
    Windows 下端口被占用
    Java 反射机制
  • 原文地址:https://www.cnblogs.com/ZJPaang/p/13745228.html
Copyright © 2011-2022 走看看