Friday, April 21, 2017

Amazon Interview Question:Check if a string can be obtained by rotating another string 2 places in Java

Given two strings, the task is to find if a string can be obtained by rotating another string two places.

Input : string1 = "amazon"
        string2 = "azonam"  // rotated anti-clockwise
Output : Yes

Input : string1 = "amazon"
        string2 = "onamaz"  // rotated clockwise
Output : Yes


Solution:

1- There can be only two cases:

    a) Clockwise rotated
    b) Anti-clockwise rotated

2- If clockwise rotated that means elements
   are shifted in right.
   So, check if a substring[2.... len-1] of
   string2 when concatenated with substring[0,1]
   of string2 is equal to string1. Then, return true.

3- Else, check if it is rotated anti-clockwise
   that means elements are shifted to left.
   So, check if concatenation of substring[len-2, len-1]
   with substring[0....len-3] makes it equals to
   string1. Then return true.

4- Else, return false.

Sample Code:

/**
 * @author Abhinaw.Tripathi
 *
 */
public class RotatingString {

/**
* @param args
*/
public static void main(String[] args) {

  String str1 = "amazon";
  String str2 = "azonam";

   isRotated(str1, str2) ;

}

public static boolean isRotated(String str1, String str2)
{
String s = str1 + str2;
if(s.contains(str2))
return true;

else

return false;
}

}


Output: Yes




No comments: