用Java编写一个程序,以检查是否可以通过将另一个字符串旋转2位来获得一个字符串

假设我们有两个字符串“ a”和“ b”,任务是查找是否可以通过将字符串“ a”沿逆时针或顺时针方向精确旋转2个位置来获得字符串“ b”。例如,

输入1 -

a = google
b = legoog

输出-

True

说明-字符串“ google”可以沿逆时针方向旋转两个位置,这导致字符串“ legoog”。因此,我们返回True。

输入- 2 -

a = tuorialst
b = tutorials

输出-

False

说明-字符串“ tuorialst”不能在任何方向旋转两个位置以获得另一个字符串“ tutorials”。因此,我们返回False。

解决这个问题的方法

对于给定的两个字符串,这种方法有两种情况-

  • 逆时针旋转

  • 顺时针旋转。

首先,如果两个字符串的长度不同,则返回false;否则,返回false。否则,如果两个字符串的长度都小于或等于“ 2”,则我们将返回True。

在其他情况下,我们将通过逆时针旋转两个位置来检查字符串'b'的子字符串是否等于字符串'a',然后返回True。否则为False。

类似地,如果通过将字符串“ b”沿顺时针方向旋转两个位置,它等于字符串“ a”,则返回True,否则返回false。

  • 取两个输入字符串'a'和'b'

  • 布尔函数checkRotated(string a, string b)采用两个字符串“ a”和字符串“ b”,并通过沿逆时针或顺时针方向旋转字符串“ b”来返回它们是否相等。

  • 检查字符串“ a”和字符串“ b”的长度。

  • 通过逆时针旋转两个位置来找到字符串“ b”的子字符串。

  • 现在检查结果子字符串是否等于字符串“ a”,如果相等则返回true。

  • 通过沿顺时针方向在两个位置旋转来查找字符串'b'的子字符串。

  • 现在检查结果子字符串是否等于字符串“ a”,如果相等则返回true。

  • 如果字符串不相等,则返回false。

示例

public class Solution{
   static boolean checkRotated(String str1, String str2){
      String s1="";
      String s2="";
      int len= str2.length();
      if (str1.length() != str2.length())
         return false;
      s1= str2.substring(len-2, len)+ str2.substring(0,len-2);
      s2= str2.substring(0,2) + str2.substring(0,2);
      return (str1.equals(s1) || str1.equals(s2));
   }
   public static void main(String[] args){
      String s1= "google";
      String s2= "legoog";
      System.out.println(checkRotated(s1,s2) ? "True":"False");
   }
}
输出结果

如果我们运行上面的代码,它将输出为:

False

由于上述代码的输出为“ True”,因此将输出“ True”。