2018-11-30 字符串的排列

題目:

字符串的排列

解法:

只要在一個(gè)s1長(zhǎng)度的固定大小的窗口內(nèi), 如果有其中的字符數(shù)量相等, 即認(rèn)為第一個(gè)字符串s1的排列之一是第二個(gè)字符串s2的子串

public boolean checkInclusion(String s1, String s2) {
    if (s1 == null || s2 == null) {
        return false;
    }
    if (s1 == "") {
        return true;
    }
    if (s1.length() > s2.length()) {
        return false;
    }
    int[] s1CharCount = new int[26];
    int[] slidingWindow = new int[26];
    for (int i = 0; i < s1.length(); i++) {
        // 對(duì)應(yīng)字符相加
        s1CharCount[s1.charAt(i) - 'a']++;
    }

    int s1Len = s1.length();
    // 窗口左邊界, 包含
    int lo = 0;
    // 窗口右邊界, 包含
    int hi = s1Len - 1;

    // 初始化窗口的字符個(gè)數(shù), 暫時(shí)不包含hi
    for (int i = lo; i < hi; i++) {
        slidingWindow[s2.charAt(i) - 'a']++;
    }

    while (hi < s2.length()) {
        slidingWindow[s2.charAt(hi) - 'a']++;
        // 對(duì)比兩個(gè)數(shù)組是否相等
        if (Arrays.equals(s1CharCount, slidingWindow)) {
            return true;
        } else {
            slidingWindow[s2.charAt(lo++) - 'a']--;
        }
        hi++;
    }
    return false;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 算法思想貪心思想雙指針排序快速選擇堆排序桶排序荷蘭國(guó)旗問題二分查找搜索BFSDFSBacktracking分治動(dòng)態(tài)...
    第六象限閱讀 4,889評(píng)論 0 0
  • 前言 2. 實(shí)現(xiàn) Singleton 3. 數(shù)組中重復(fù)的數(shù)字 4. 二維數(shù)組中的查找 5. 替換空格 6. 從尾到...
    Observer_____閱讀 3,152評(píng)論 0 1
  • 在C語(yǔ)言中,五種基本數(shù)據(jù)類型存儲(chǔ)空間長(zhǎng)度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,991評(píng)論 0 2
  • 北京時(shí)間19:40 我正坐在去往石家莊的動(dòng)車上 開著空調(diào) 很熱 真的很熱 半小時(shí)前一家人把我送到火車站 直到半小時(shí)...
    Cutie_ll閱讀 302評(píng)論 0 0
  • 起霧了。身邊原本熟悉的風(fēng)景變得一片模糊。 周趕著上班,低頭猛走。周在一所遠(yuǎn)近聞名的學(xué)校工作。之所以出名,是因?yàn)閷W(xué)校...
    大媽不油膩閱讀 245評(píng)論 3 0

友情鏈接更多精彩內(nèi)容