Lc面試題0109字串輪轉
阿新 • • 發佈:2021-07-16
不會,我可以學;落後,我可以追趕;跌倒,我可以站起來!package com.leetcode.leetcode.licm; /** * @description: 面試題 01.09. 字串輪轉 * 字串輪轉。給定兩個字串s1和s2,請編寫程式碼檢查s2是否為s1旋轉而成(比如,waterbottle是erbottlewat旋轉後的字串)。 * <p> * 示例1: * <p> * 輸入:s1 = "waterbottle", s2 = "erbottlewat" * 輸出:True * 示例2: * <p> * 輸入:s1 = "aa", s2 = "aba" * 輸出:False * 提示: * <p> * 字串長度在[0, 100000]範圍內。 * 說明: * <p> * 你能只調用一次檢查子串的方法嗎? * @author: licm * @create: 2021-07-16 09:24 **/ public class Lc面試題0109字串輪轉 { // /** // * 方法1:雜湊表 超時 // * // * @param s1 // * @param s2 // * @return // */ // public static boolean isFlipedString(String s1, String s2) { // if (s1.length() != s2.length()) { // return false; // } // // int[] res = new int[26]; // for (int i = 0; i < s1.length(); i++) { // res[s1.charAt(i) - 'a']++; // } // for (int i = 0; i < s2.length(); i++) { // res[s2.charAt(i) - 'a']--; // } // for (int i = 0; i < res.length; i++) { // if (res[i] < 0) { // return false; // } // } // // return true; // // } /** * 方法2 String的 indexof * <p> * 因為s2是是旋轉的字串,所以s2+s2必然會有一個完整的s1存在,在用indexof匹配是否出現就可以了 * * @param s1 * @param s2 * @return */ public static boolean isFlipedString(String s1, String s2) { return s1.length() == s2.length() && (s2 + s2).indexOf(s1) > -1; } public static void main(String[] args) { String s1 = "waterbottle"; String s2 = "erbottlewat"; System.out.println(isFlipedString(s1, s2)); } }