Golang | Leetcode Golang题解之第87题扰乱字符串

题目:

题解:

func isScramble(s1, s2 string) bool {n := len(s1)dp := make([][][]int8, n)for i := range dp {dp[i] = make([][]int8, n)for j := range dp[i] {dp[i][j] = make([]int8, n+1)for k := range dp[i][j] {dp[i][j][k] = -1}}}// 第一个字符串从 i1 开始,第二个字符串从 i2 开始,子串的长度为 length// 和谐返回 1,不和谐返回 0var dfs func(i1, i2, length int) int8dfs = func(i1, i2, length int) (res int8) {d := &dp[i1][i2][length]if *d != -1 {return *d}defer func() { *d = res }()// 判断两个子串是否相等x, y := s1[i1:i1+length], s2[i2:i2+length]if x == y {return 1}// 判断是否存在字符 c 在两个子串中出现的次数不同freq := [26]int{}for i, ch := range x {freq[ch-'a']++freq[y[i]-'a']--}for _, f := range freq[:] {if f != 0 {return 0}}// 枚举分割位置for i := 1; i < length; i++ {// 不交换的情况if dfs(i1, i2, i) == 1 && dfs(i1+i, i2+i, length-i) == 1 {return 1}// 交换的情况if dfs(i1, i2+length-i, i) == 1 && dfs(i1+i, i2, length-i) == 1 {return 1}}return 0}return dfs(0, 0, n) == 1
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697562.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

blender cell fracture制作破碎效果,将一个模型破碎成多个模型

效果&#xff1a; 1.打开编辑-》偏好设置。搜索cell&#xff0c;勾选上如下图所示的&#xff0c;然后点击左下角菜单里的保存设置。 2.选中需要破碎的物体&#xff0c;按快捷键f3&#xff08;快速搜索插件&#xff09;&#xff0c;搜索cell fracture。 3.调整自己需要的参数配置…

02-WPF_基础(一)

1、基础 各模块类型 链接&#xff1a;如何&#xff1a;向 Viewbox 的内容应用 Stretch 属性 - WPF .NET Framework | Microsoft Learn WPF基础以及事件绑定与数据绑定的情况&#xff0c;&#xff0c;在学习XAML&#xff0c;数据结构以及一个项目学习平台来练手&#xff0c;网络…

Hive表数据优化

Hive表数据优化 1.文件格式 为Hive表中的数据选择一个合适的文件格式&#xff0c;对提高查询性能的提高是十分有益的。 &#xff08;1&#xff09;Text File 文本文件是Hive默认使用的文件格式&#xff0c;文本文件中的一行内容&#xff0c;就对应Hive表中的一行记录。 可…

部署Discuz论坛项目

DIscuz 是由 PHP 语言开发的一款开源社交论坛项目。运行在典型的LNMP/LAMP 环境中。 安装MySQL数据库5.7 主机名IP地址操作系统硬件配置discuz-db192.168.226.128CentOS 7-mini-20092 Core/4G Memory 修改主机名用来自己识别 hostnamectl set-hostname discuz-db #重连远程…

单链表经典算法OJ题---力扣21

1.链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;【点击即可跳转】 思路&#xff1a;创建新的空链表&#xff0c;遍历原链表。将节点值小的节点拿到新链表中进行尾插操作 遍历的结果只有两种情况&#xff1a;n1为空 或 n2为空 注意&#xff1a;链表为空的情况 代…

OPT系列极速版远距离光数据传输器|光通讯传感器安装与调试方法

OPT系列极速版远距离光数据传输器|光通讯传感器使用红外激光通信&#xff0c;满足全双工 100M 带宽&#xff0c;通讯距离可达 300 米。能够快速&#xff0c;稳地传送数据&#xff0c;支持主流的工业控制总线&#xff08;Profinet&#xff0c;Ethercat 等&#xff09;&#xff1…

简单易懂的HashMap使用指南:从入门到精通

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

LeetCode题练习与总结:不同的二叉搜索树Ⅱ--95

一、题目描述 给你一个整数 n &#xff0c;请你生成并返回所有由 n 个节点组成且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,null,2,null,3],[1,null,3,2],[2,1,3],[3,1,null,nul…

【Linux】了解信号产生的五种方式

文章目录 正文前的知识准备kill 命令查看信号man手册查看信号信号的处理方法 认识信号产生的5种方式1. 工具2. 键盘3. 系统调用kill 向任意进程发送任意信号raise 给调用方发送任意信号abort 给调用方发送SIGABRT信号 4. 软件条件5. 异常 正文前的知识准备 kill 命令查看信号 …

具备教学意义的实操(用栈实现队列)

具备教学意义的实操&#xff08;用队列实现栈&#xff09;-CSDN博客https://blog.csdn.net/Jason_from_China/article/details/138729955 具备教学意义的实操&#xff08;用栈实现队列&#xff09; 题目 232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; ​ 逻辑​​…

鸿蒙内核源码分析(用户态锁篇) | 如何使用快锁Futex(上)

快锁上下篇 鸿蒙内核实现了Futex&#xff0c;系列篇将用两篇来介绍快锁&#xff0c;主要两个原因: 网上介绍Futex的文章很少&#xff0c;全面深入内核介绍的就更少&#xff0c;所以来一次详细整理和挖透。涉及用户态和内核态打配合&#xff0c;共同作用&#xff0c;既要说用户…