zoukankan      html  css  js  c++  java
  • 1593. 拆分字符串使唯一子字符串的数目最大-dfs-中等

    问题描述

    给你一个字符串 s ,请你拆分该字符串,并返回拆分后唯一子字符串的最大数目。

    字符串 s 拆分后可以得到若干 非空子字符串 ,这些子字符串连接后应当能够还原为原字符串。但是拆分出来的每个子字符串都必须是 唯一的 。

    注意:子字符串 是字符串中的一个连续字符序列。

    示例 1:

    输入:s = "ababccc"
    输出:5
    解释:一种最大拆分方法为 ['a', 'b', 'ab', 'c', 'cc'] 。像 ['a', 'b', 'a', 'b', 'c', 'cc'] 这样拆分不满足题目要求,因为其中的 'a' 和 'b' 都出现了不止一次。
    示例 2:

    输入:s = "aba"
    输出:2
    解释:一种最大拆分方法为 ['a', 'ba'] 。
    示例 3:

    输入:s = "aa"
    输出:1
    解释:无法进一步拆分字符串。
     

    提示:

    1 <= s.length <= 16

    s 仅包含小写英文字母

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/split-a-string-into-the-max-number-of-unique-substrings

    解答

    //画出递归树,然后dfs
    class Solution {
        Map<String, Integer> subs;
        int max;
        public void dfs(String s, int start){
            if(start == s.length()){
                // for(Map.Entry<String,Integer> entry:subs.entrySet()){
                //     System.out.println(entry.getKey()+":"+entry.getValue()+"--->"+subs.keySet().size());
                // }
                // System.out.println();
                int len = subs.keySet().size();
                if(len > max)max = len;
                return;
            }
            for(int i=start;i<s.length();i++){
                String temp = s.substring(start,i+1);
                if(!subs.containsKey(temp))subs.put(temp, 1);
                else continue;
                dfs(s, i+1);
                if(subs.containsKey(temp))subs.remove(temp);
            }
        }
        public int maxUniqueSplit(String s) {
            int len=s.length();
            if(len<=1)return len;
            subs = new HashMap<String, Integer>();
            max = Integer.MIN_VALUE;
            for(int i=0;i<s.length();i++){
                String temp = s.substring(0,i+1);
                subs.put(temp, 1);
                dfs(s, i+1);
                subs.remove(temp);
            }
            return max;
        }
    }
  • 相关阅读:
    XML 加密、解密
    word 转 pdf
    PowerDesigner(PowerDesigner15.1.0.2850)下载、安装以及破解
    SQL 2005 18456
    SQL 2005端口的修改
    SQL——统计查询
    由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例 解决办法
    ASP.NET MVC中Model View Controller的开发顺序
    使用Windows身份验证的Intranet网站安全管理 Windows Authentication
    ASP.NET web.config中数据库连接字符串connectionStrings节的配置
  • 原文地址:https://www.cnblogs.com/xxxxxiaochuan/p/13704652.html
Copyright © 2011-2022 走看看