leetcode 87. 扰乱字符串

embedded/2025/1/15 21:03:32/

题目:87. 扰乱字符串 - 力扣(LeetCode)

dfs+状态记录。

  • dfs:以两个字符串 [a1,a2,a3,a4] 和 [b1,b2,b3,b4]为例,可以往下搜以下几种情况,一种情况为true就能返回true
    • F([a1],[b1]) && F([a2,a3,a4],[b2,b3,b4])
    • F([a1],[b4]) && F([a2,a3,a4],[b1,b2,b3])
    • F([a1,a2],[b1,b2]) && F([a3,a4],[b3,b4])
    • F([a1,a2],[b3,b4]) && F([a3,a4],[b1,b2])
    • F([a1,a2,a3],[b1,b2,b3]) && F([a4],[b4])
    • F([a1,a2,a3],[b2,b3,a4]) && F([a4],[b1])
  • 状态记录:记录两个字符串a和b的起始位置和长度,可以用一个三维数组表示 f[ia][ib][length] ,看数据规模只有 30,嫌麻烦直接用了一维数组 f[ia * 10000 + ib * 100 + length]
    class Solution {
    public:bool F(const char* a, const char* b, int ia, int ib, int len, uint8_t* f) {if (len == 1 && a[ia] == b[ib]) {return true;}int idx = ia * 10000 + ib * 100 + len;if (f[idx]) {return f[idx] == 1;}f[idx] = 1;for (int i = 0; i < len; i++) {if (a[ia + i] != b[ib + i]) {f[idx] = 2;break;}}if (f[idx] == 1) {return true;}for (int i = 1; i < len; i++) {if (F(a, b, ia, ib, i, f) && F(a, b, ia + i, ib + i, len - i, f)) {f[idx] = 1;break;}if (F(a, b, ia, ib + len - i, i, f) && F(a, b, ia + i, ib, len - i, f)) {f[idx] = 1;break;}}return f[idx] == 1;}bool isScramble(string s1, string s2) {const char* a = s1.c_str();const char* b = s2.c_str();int n = (int) s1.length();uint8_t* f = new uint8_t[400000];memset(f, 0, 400000);return F(a, b, 0, 0, n, f);}
    };


http://www.ppmy.cn/embedded/154197.html

相关文章

Linux 常见运营维护,从安装软件开始,到mysql,php,redis,tomcat等软件安装,配置,优化,持续更新中。。。

下载centos7 CentOS 7 完整版&#xff08;DVD&#xff09;&#xff1a; https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.isoCentOS 7 最小化版&#xff08;Minimal&#xff09;&#xff1a; https://mirrors.aliyun.com/centos/7/isos/x86_64/C…

[ComfyUI]接入Google的Whisk,巨物融合玩法介绍

一、介紹​ 前段时间&#xff0c;谷歌推出了一个图像生成工具whisk&#xff0c;有一个很好玩的图片融合玩法&#xff0c;分别提供三张图片,就可以任何组合来生成图片。​ ​ 最近我发现有人开发了对应的ComfyUI插件&#xff0c;对whisk做了支持&#xff0c;就来体验了下&#…

微信小程序:实现首页权限菜单效果

一、效果 二、数据库表 1、菜单表 包含权限名称,模块名称,图标名称,页面跳转的方法,菜单是否显示栏位 2、角色对应权限表 包含角色id和权限id,这个表将角色和菜单角色连接,给角色赋予权限功能 3、 账户表 用于绑定账号隶属于什么角色,绑定的角色表 4、角色表 菜单的…

【机器学习】数学知识:指数函数(exp)

在数学和编程中&#xff0c;exp 表示指数函数&#xff0c;即自然常数 e 为底的幂函数。 其数学表达式为&#xff1a; 其中&#xff1a; e 是一个常数&#xff0c;称为自然对数的底数&#xff0c;其值约为 2.718。x 是指数。 性质 基本性质&#xff1a; 与自然对数的关系&…

wireshark排除私接小路由

1.wireshark打开&#xff0c;发现了可疑地址&#xff0c;合法的地址段DHCP是192.168.100.0段的&#xff0c;打开后查看发现可疑地址段&#xff0c;分别是&#xff0c;192.168.0.1 192.168.1.174 192.168.1.1。查找到它对应的MAC地址。 ip.src192.168.1.1 2.通过show fdb p…

C#Struct堆栈

Struct若其内部含有堆对象&#xff0c;Struct的该对象放在堆上&#xff1b; Struct当做参数传递时&#xff0c;其堆属性作为引用传递&#xff0c;值属性还是作为值传递&#xff1b; struct TS { public int[] t1; public int t2; } public void TF1(TS t) { int[] t1 t.t1; …

纯 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差异分析

一、纯 Python 1.1 基础概念 Python 是一种高级、通用、解释型的编程语言&#xff0c;以其简洁易读的语法和丰富的标准库而闻名。“纯 Python” 在这里指的是不依赖特定的 Web 框架或数据分析工具&#xff0c;仅使用 Python 原生的功能和标准库来开发应用程序或执行任务。 1.…

CancerGPT :基于大语言模型的罕见癌症药物对协同作用少样本预测研究

今天我们一起来剖析一篇发表于《npj Digital Medicine》的论文——《CancerGPT for few shot drug pair synergy prediction using large pretrained language models》。该研究聚焦于一个极具挑战性的前沿领域&#xff1a;如何利用大语言模型&#xff08;LLMs&#xff09;在数…