判断翻转子串

假定有一个方法isSubstring,可检查一个单词是否为其余字符串的子串。给定两个字符串s1,s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次isSubstringui

好比waterbottle是erbottlewat旋转后的字符串字符串

解法:string

假定s2由s1旋转而成,那么,咱们就能够找出旋转点在哪,例如,若以wat对waterbottle旋转,就会获得erbottlewat.在旋转字符串时,咱们会把s1切分红两部分:x和y,并将它们从新组合成s2io

s1=xy=waterbottleclass

x=wat方法

y = erbottlestatic

s2=yx=erbottlewat字符

所以,咱们须要确认有没有办法将s1切分红x和y,以知足xy=s1和yx=s2。不论x和y之间的分割点在何处,咱们会发现yx确定是xyxy的子串,也即s2老是s1s1的子串分割

 

package cglib;return

public class StringNumber {     public boolean isRotation(String s1,String s2){           int len = s1.length();           if(len == s2.length() && len >0){               String s1s1= s1+s1;               return isSubstring(s1s1,s2);           }           return false;       }           public static void main(String[] args) {             String str1="qwertyu";             String str2="wertyui";                         System.out.println(isRotation(str1,str2));                                               }      }       

相关文章
相关标签/搜索