Skip to content
Related Articles

Related Articles

Check for string rotation in Java

View Discussion
Improve Article
Save Article
Like Article
  • Difficulty Level : Easy
  • Last Updated : 11 Dec, 2018

Given two strings s1 and s2, write a snippet to check whether s2 is a rotation of s1. Strings may contain duplicates.

Examples:

Input :  s1 = "ABCD", s2 = "CDAB"
Output : True
String s1 is rotation of s2.

Input :  s1 = "ABAD", s2 = "ADAB"
Output : True

Input : s1 = ABCD, and s2 = ACBD 
Output : False

One simple solution is to search first occurrence of s1 in s2. For every match, check if remaining string matches circularly.

An efficient solution is to concatenate s1 with itself. s2 is a rotation of s1 if and only if it is a substring of the rotated string. In java we can either use string contains or indexOf to check for substring.




// Java program to check if two given strings are
//  rotations of each other
  
class StringRotation {
  
    /* Function checks if passed strings (str1 and str2)
       are rotations of each other */
    static boolean areRotations(String str1, String str2)
    {
        // There lengths must be same and str2 must be
        // a substring of str1 concatenated with str1.
        return (str1.length() == str2.length()) && 
               ((str1 + str1).contains(str2));
    }
  
    // Driver method
    public static void main(String[] args)
    {
        String str1 = "AACD";
        String str2 = "ACDA";
  
        if (areRotations(str1, str2))
            System.out.println("Yes");
        else
            System.out.printf("No");
    }
}


Output:

Yes
My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!