Assume you have a method isSubstring which checks if one word is a substring of another. Given two strings, s1 and s2, write code to check if s2 is a rotation of s1 using only one call to isSubstring (i.e., “waterbottle” is a rotation of “erbottlewat”).
Approach:
Let S1 = "waterbottle";
S2 = "erbott";
concatanate S1 with itself
So we have S3 = S1 + S1 = "waterbottle" + "waterbottle" ;
S3 = "waterbottlewaterbottle";
Now we need to check if the S2 is a substring of S1.
if (s2.isSubstring(s3)) then return true;
else return false;
Approach:
Let S1 = "waterbottle";
S2 = "erbott";
concatanate S1 with itself
So we have S3 = S1 + S1 = "waterbottle" + "waterbottle" ;
S3 = "waterbottlewaterbottle";
Now we need to check if the S2 is a substring of S1.
if (s2.isSubstring(s3)) then return true;
else return false;
Liked your post. Here is my code in java from http://k2code.blogspot.in/2011/12/how-will-you-check-if-s1-is-rotated.html :
ReplyDeleteboolean isRotation(String s1,String s2) {
return (s1.length() == s2.length()) && ((s1+s1).indexOf(s2) != -1);
}