导航

6.翻转子串

Posted on 2015-08-25 10:35  骄阳照林  阅读(106)  评论(0编辑  收藏  举报

题目描述

假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。

给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。

测试样例:
"Hello world","worldhello "
返回:false
 
"waterbottle","erbottlewat"
返回:true

代码如下:
import java.util.*;

public class ReverseEqual {
    public boolean checkReverseEqual(String s1, String s2) {
        int len1=s1.length();
        int len2=s2.length();
        if(len1==len2){
            String s1s1=s1+s1;
            return isSubstring(s1s1,s2);
        }
        return false;
    }
    
    boolean isSubstring(String s1,String s2){
        int len=s1.length();
        for(int i=0;i<len;i++)
            for(int j=i+1;j<len;j++){
                String s3=s1.substring(i,j+1);
                System.out.println(s3);
                if(s2.equals(s3)) return true;
            
        }
        return false;
    }
}