用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”。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP