博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 笔记系列 19 Scramble String [合理使用递归]
阅读量:4882 次
发布时间:2019-06-11

本文共 1803 字,大约阅读时间需要 6 分钟。

题目:

Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.

Below is one possible representation of s1 = "great":

great   /    \  gr    eat / \    /  \g   r  e   at           / \          a   t

To scramble the string, we may choose any non-leaf node and swap its two children.

For example, if we choose the node "gr" and swap its two children, it produces a scrambled string"rgeat".

rgeat   /    \  rg    eat / \    /  \r   g  e   at           / \          a   t

We say that "rgeat" is a scrambled string of "great".

Similarly, if we continue to swap the children of nodes "eat" and "at", it produces a scrambled string"rgtae".

rgtae   /    \  rg    tae / \    /  \r   g  ta  e       / \      t   a

We say that "rgtae" is a scrambled string of "great".

Given two strings s1 and s2 of the same length, determine if s2 is a scrambled string of s1.

完全没有思路。

卡了很久,最后参考。写了一个递归的版本解决。

代码:

public boolean isScramble(String s1, String s2) {        // Start typing your Java solution below        // DO NOT write main() function       if(!isContainSameChars(s1, s2))return false;       if(s1.equals(s2)) return true;       for(int split = 1; split < s1.length(); split++){           String s11 = s1.substring(0, split);           String s12 = s1.substring(split);                      String s21 = s2.substring(0, split);           String s22 = s2.substring(split);           if(isScramble(s11, s21) && isScramble(s12, s22)) return true;                      s21 = s2.substring(0, s2.length() - split);           s22 = s2.substring(s2.length() - split);           if(isScramble(s11, s22) && isScramble(s12, s21)) return true;       }       return false;    }
View Code

其实不算难。除非你想不到递归。

转载于:https://www.cnblogs.com/lichen782/p/leetcode_Scramble_String.html

你可能感兴趣的文章
接口请求失败处理,重新请求并限制请求次数.自己封装搞定retry函数
查看>>
C# 数据库连接增删改查
查看>>
Xcode 最近使用的一些问题
查看>>
JSP 自定义标签
查看>>
ACM_水题你要信了(修改版)
查看>>
题解报告:hdu 1087 Super Jumping! Jumping! Jumping!
查看>>
汇编实验一
查看>>
2015 Multi-University Training Contest 6 hdu 5357 Easy Sequence
查看>>
HDU 4856 Tunnels
查看>>
常用的页面加载慢的解决方案
查看>>
Excel催化剂开源第11波-动态数组函数技术开源及要点讲述
查看>>
关于Spring配置文件提示的插件下载
查看>>
软件工程师就业前景
查看>>
asp.net成员管理系统membership详解教程(一)
查看>>
情态动词
查看>>
关于linux的一些基础知识
查看>>
架构漫谈阅读感悟一
查看>>
记一个数据库游标的实例
查看>>
netcore2.0 ORM框架中如何配置自定义的主外键加载
查看>>
基础练习 十进制转十六进制
查看>>