程式設計師面試金典1.9-假定 s2 由 s1 旋轉而成, 那麼, 我們可以找出旋轉點在哪兒。例如, 若以 wat 對 waterbottle 旋轉,就會得到 erbottlewat。在旋轉字串時,會把 s1 切分為兩部分: x 和 y,並將它們重 新組合成 s2
阿新 • • 發佈:2021-11-06
解法思路:
因為是旋轉,這裡沒有說旋轉多次(如果不限制旋轉次數,即是字元種類的個數相同即可)。就當一次來計算,那馬旋轉後的結果一定是兩個原字串拼接中的某一欄位
public class StringSpinTest { static boolean isRotation(String str1 , String str2) { if (str1.hashCode() == str2.hashCode()) { return true; } if (str1.length() != str2.length()) { return false; } String newString = str1 + str1; boolean result = isSubstring(newString, str2); return result; } /** * 手動寫一個isSubstring的方法用於測試,並非是題目給的 * @param str1 * @param str2 * @return */ private static boolean isSubstring(String str1, String str2) { for (int i = 0; i < str1.length(); i++) { if (str1.length() < (i + str2.length())) { return false; } if (str1.substring(i, i + str2.length()).equals(str2)) { return true; } } return false; } public static void main(String[] args) { String str1 = "waterbottle"; String str2 = "erbottlewat"; boolean result = isRotation(str1, str2); System.out.println("是否是旋轉的字串: " + result); } }