当前位置: 首页 > news >正文

力扣第87题-扰乱字符串

力扣链接:87. 扰乱字符串 - 力扣(LeetCode)

思路:
从一个位置将两个字符串分别划分成两个子串,然后递归判断两个字符串的两个子串是否互相为扰乱字符串。因为不知道在哪个位置分割字符串,所以直接遍历每个位置进行分割。在判断是否两个子串能否通过翻转变成相等的时候,需要保证传给函数的子串长度是相同的。
我们分两种情况讨论:互换和不互换
终止条件就是,当长度是1的两个字符串是否相等
记忆化递归用到python的缓存库,将已经计算过的结果保存到缓存中,再计算时在缓存中,不用再次计算
import functools
@functools.lru_cache(None)

import functools@functools.lru_cache(None)
def isScramble(s1: str, s2: str):N = len(s1)if N == 0:return Trueif N == 1:return s1 == s2     # 最终的递归出口if sorted(s1) != sorted(s2):return Falsefor i in range(1, N):if isScramble(s1[:i], s2[:i]) and isScramble(s1[i:], s2[i:]):return Trueelif isScramble(s1[:i], s2[-i:]) and isScramble(s1[i:], s2[:-i]):return Truereturn Falseprint(isScramble("great", "rgeat"))

http://www.lryc.cn/news/577024.html

相关文章:

  • 如何通过自动化减少重复性工作
  • Vue中的v-if与emit事件传递:一个常见陷阱分析
  • 推荐几本关于网络安全的书
  • FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南
  • 6月28日记
  • Re:从0开始的 空闲磁盘块管理(考研向)
  • H3C-路由器交换机-中继
  • 用户行为序列建模(篇六)-【阿里】DSIN
  • DeepSeek五子棋游戏与AI对战
  • 【unity游戏开发——网络】网络游戏通信方案——强联网游戏(Socket长连接)、 弱联网游戏(HTTP短连接)
  • WebRTC(十三):信令服务器
  • Qt Windows下编译动态库生成的.a文件是什么?
  • 新生代潜力股刘小北:演艺路上的璀璨新星
  • Function Calling与MCP的区别
  • Ubuntu开放mysql 3306端口
  • X-Search:Spring AI实现的AI智能搜索
  • SpringMVC实战:从配置到JSON处理全解析
  • AlphaFold3安装报错
  • SpringCloud系列(40)--SpringCloud Gateway的Filter的简介及使用
  • cron 表达式 0 10 0/2 * * ? 的含义
  • Linux基本命令篇 —— head命令
  • 5 c++核心——文件操作
  • Origin绘制复合子母饼状图—复合柱饼图、复合环饼图及复合饼图
  • [Linux] PXE
  • es6特性-第一部分
  • Tomcat 安装使用教程
  • mybatis-plus从入门到入土(一):快速开始
  • 云端可视化耦合电磁场:麦克斯韦方程组的应用-AI云计算数值分析和代码验证
  • Spring Cloud:服务监控与追踪的高级实践
  • 为什么要安装create-vue@3.17.0