`
hcx2013
  • 浏览: 88941 次
社区版块
存档分类
最新评论

Scramble String

 
阅读更多

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 class Solution {
    public boolean isScramble(String s1, String s2) {
        if (s1.length() != s2.length()) {
        	return false; 
        }
        if (s1.length()==1 && s2.length()==1) {
        	return s1.charAt(0) == s2.charAt(0); 
        }
        char[] arr1 = s1.toCharArray();
        char[] arr2 = s2.toCharArray();
        Arrays.sort(arr1);
        Arrays.sort(arr2);
        if (!new String(arr1).equals(new String(arr2))) {
        	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;
    }
}

 

分享到:
评论

相关推荐

    python-leetcode题解之087-Scramble-String

    python python_leetcode题解之087_Scramble_String

    js-leetcode题解之87-scramble-string.js

    javascript js_leetcode题解之87-scramble-string.js

    c语言-leetcode题解之0087-scramble-string.zip

    c语言基础 c语言_leetcode题解之0087_scramble_string.zip

    leetcode1-200题源码(c++)

    3. 题目87:扫描线排序 (Scramble String) 这是一个字符串处理问题,通过递归地分割字符串并比较子串的排序来判断是否为原始字符串的乱序版本。解题策略通常包括字符串处理、递归和排序。 4. 题目79:单词搜索 ...

    Coding Interview in Java

    13. 字符串处理高级问题:如Scramble String(错乱字符串),验证字符串的变换是否有效。 14. 正则表达式匹配问题:考察对正则表达式的理解和应用。 15. 位操作问题:例如Majority Element(多数元素)、First ...

    Jumble-Scramble-Word-Game:混杂游戏,可从文本文件中猜测生成的混杂词

    1. 字符串操作:在Java中,`String`类提供了丰富的操作方法,如`toCharArray()`用于将字符串转换为字符数组,便于对每个字符进行独立操作;`shuffle()`或自定义的随机排序算法可以用来打乱字符顺序;`equals()`则...

    java 混淆工具,不可逆 jocky 也许是最好的了

    如果使用-scramble不带级别参数,则相当于-scramble:package 2.2 Jocky for Ant 近年来,Ant已经成为Java应用开发中打包工具的事实上的标准。在应用的开发过程中,我们往往都会有一个Ant脚本,通过该脚本,能够对...

    joc eclipse plugin

    如果使用-scramble不带级别参数,则相当于-scramble:package 2.2 Jocky for Ant 近年来,Ant已经成为Java应用开发中打包工具的事实上的标准。在应用的开发过程中,我们往往都会有一个Ant脚本,通过该脚本,...

    jocky 混肴编译rar包(ant和插件俩个版本)

    如果使用-scramble不带级别参数,则相当于-scramble:package 2.2 Jocky for Ant 近年来,Ant已经成为Java应用开发中打包工具的事实上的标准。在应用的开发过程中,我们往往都会有一个Ant脚本,通过该脚本,...

    Python-scrmbl用于在终端中实现拼凑打印效果的库和CLI

    例如,`from scrmbl import scramble`,然后你可以使用`scramble("your_string")`来打乱一个字符串。 Python-scrmbl的命令行界面(CLI)使得非程序员也能轻松使用这个工具。只需在终端输入`scrmbl`加上你想要拼凑的...

    Prototype-Basics:Devleague 原型基础知识 2015

    // ---- * 读我 * ---- // // --- [ Array.prototype ] --- // 1 . 在 Array.prototype 上编写一系列函数来实现以下功能。 [toString] - 此方法必须获取数组的内容... [scramble] - 此方法必须以混合顺序返回当前上下文

    java拼图小游戏项目开发教程.docx

    public static void main(String[] args) { SwingUtilities.invokeLater(() -&gt; { PuzzleGame game = new PuzzleGame(); }); } } ``` - **拼图面板实现:** 1. **创建面板类:** - 在`PuzzleGame`包下创建`...

    生活大爆炸每集单词集锦.doc

    46. String theory:弦理论,物理学中的一个理论,尝试解释所有基本粒子和力的统一模型。 47. Pick up:拿起,捡起,接电话,学得,恢复。 48. Breakup:分手,解散,破裂。 49. Glorious:辉煌的,光荣的,形容...

Global site tag (gtag.js) - Google Analytics