用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.