用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;否则,如果两个字符串的长度小于或等于“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”。

更新于: 2021年2月5日

904 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.