成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

395. Longest Substring with At Least K Repeating C

vvpvvp / 2001人閱讀

摘要:題目要求找出字符串中的最長(zhǎng)子字符串,滿足該子字符串中任何字符出現(xiàn)的次數(shù)都大于。思路和代碼這是一個(gè)經(jīng)典的分治法解決的問(wèn)題,關(guān)鍵在于我們?nèi)绾螌⑦@個(gè)問(wèn)題分解為更小的子問(wèn)題。

題目要求
Find the length of the longest substring T of a given string (consists of lowercase letters only) such that every character in T appears no less than k times.

Example 1:

Input:
s = "aaabb", k = 3

Output:
3

The longest substring is "aaa", as "a" is repeated 3 times.
Example 2:

Input:
s = "ababbc", k = 2

Output:
5

The longest substring is "ababb", as "a" is repeated 2 times and "b" is repeated 3 times.

找出字符串中的最長(zhǎng)子字符串,滿足該子字符串中任何字符出現(xiàn)的次數(shù)都大于k。

思路和代碼

這是一個(gè)經(jīng)典的分治法解決的問(wèn)題,關(guān)鍵在于我們?nèi)绾螌⑦@個(gè)問(wèn)題分解為更小的子問(wèn)題。反過(guò)來(lái)想,這個(gè)子字符串一定不包含什么元素呢?當(dāng)一個(gè)元素出現(xiàn)的總次數(shù)小于k,那么該元素一定不在子字符串中,只需要將其作為分界點(diǎn),分別找出左半部分和右半部分的滿足條件的最長(zhǎng)子字符串。

    public int longestSubstring(String s, int k) {
        return longestSubstring(s, k, 0, s.length()-1);
    }
    
    public int longestSubstring(String s, int k, int left, int right) {
        if(left > right) {
            return 0;
        }

        int[] count = new int[26];
        for(int i = left ; i<=right ; i++) {
            count[s.charAt(i) - "a"]++;
        }
        int result = right - left + 1;
        for(int i = left ; i<=right ; i++) {
            if(count[s.charAt(i)-"a"] < k && count[s.charAt(i)-"a"] > 0) {
                int leftLongest = longestSubstring(s, k, left, i-1);
                int rightLongest = longestSubstring(s, k, i+1, right);
                result = Math.max(leftLongest, rightLongest);
                
                break;
            }
        }
        return result;
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/73311.html

相關(guān)文章

  • [Leetcode] Longest Substring with At Most 2 Distin

    摘要:最新思路解法哈希表法復(fù)雜度時(shí)間空間思路我們遍歷字符串時(shí)用一個(gè)哈希表,但這個(gè)哈希表只記錄兩個(gè)東西,一個(gè)字母和它上次出現(xiàn)的時(shí)的下標(biāo),另一個(gè)字母和它上次出現(xiàn)時(shí)候的下標(biāo)。這個(gè)通過(guò)用哈希表記錄字母上次出現(xiàn)的下標(biāo),來(lái)維護(hù)一個(gè)窗口的方法也可以用于。 Longest Substring with At Most Two Distinct Characters 最新思路解法:https://yanjia...

    imccl 評(píng)論0 收藏0
  • [LeetCode] Longest Substring Without Repeating Cha

    摘要:建立數(shù)組,存儲(chǔ)個(gè)字符最近一次出現(xiàn)的位置。首次出現(xiàn)某字符時(shí),其位置標(biāo)記為,并用無(wú)重復(fù)字符計(jì)數(shù)器記錄無(wú)重復(fù)字符的長(zhǎng)度,再在更新其最大值。循環(huán)完整個(gè)字符串后,返回最大值。 Problem Given a string, find the length of the longest substring without repeating characters. Examples: Given ...

    CoderStudy 評(píng)論0 收藏0
  • [Leetcode] Longest Substring Without Repeating Cha

    摘要:哈希表是最自然的想法。在遍歷字符串時(shí),我們先根據(jù)哈希表找出該字符上次出現(xiàn)的位置,如果大于等于子字符串首,便更新子字符串首。結(jié)束后,將該字符新的位置放入哈希表中。 Longest Substring Without Repeating Characters 最新更新解法:https://yanjia.me/zh/2018/12/... Given a string, find the ...

    FleyX 評(píng)論0 收藏0
  • [leetcode] Minimum Window Substring

    摘要:使用而不是因?yàn)槲覀冃枰氖亲钪?,中間值我們不在乎,所以一次收斂到最小。下面來(lái)三個(gè)需要查重并且記錄上次出現(xiàn)的位置,選擇以為例,走到用做檢查,發(fā)現(xiàn)出現(xiàn)過(guò),把移到的下一個(gè)。是上個(gè)題目的簡(jiǎn)易版,或者特殊版。 這里聊一聊解一類問(wèn)題,就是滿足某一條件的substring最值問(wèn)題。最開始我們以Minimum Window Substring為例,并整理總結(jié)leetcode里所有類似題目的通解。 Gi...

    Pines_Cheng 評(píng)論0 收藏0
  • [Leetcode]Longest Substring Without Repeating Char

    摘要:解題思路本題借助實(shí)現(xiàn)。如果字符未出現(xiàn)過(guò),則字符,如果字符出現(xiàn)過(guò),則維護(hù)上次出現(xiàn)的遍歷的起始點(diǎn)。注意點(diǎn)每次都要更新字符的位置最后返回時(shí),一定要考慮到從到字符串末尾都沒有遇到重復(fù)字符的情況,所欲需要比較下和的大小。 Longest Substring Without Repeating CharactersGiven a string, find the length of the lon...

    awesome23 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<