最短連續子串

2021-10-02 15:13:21 字數 1034 閱讀 9797

題目描述

eli拿到了乙個僅由小寫字母組成的字串。

她想擷取一段連續子串,這個子串包含至少 個相同的某個字母。

她想知道,子串的長度最小值是多少?

記錄一下每乙個字母出現的位置,在列舉一下有k個相同的字母的是哪乙個字母,只要取連續包含k個該字母的子串最小值即可

#include

using

namespace std;

struct node

sum[30]

;int

main()

int ans =

10000010

;for

(int i=

0; i<

26; i++)if

(ans !=

10000010

) cout

;}

用乙個陣列g[i]記錄字串,用head記下起點,last表示當前遍歷到的索引,從前往後遍歷,並記錄每乙個字母的個數,如果乙個字母的個數等於k了,就讓head++,直到g[head]等於該字母,此時對於g[head~last]這個子串來說,是符合題意的最小子串

#include

#define maxn 200010

#define inf 9999999

using

namespace std;

int n,k,ans=inf;

int que[maxn]

,head=

1,tail=0;

int num[30]

;string str;

intmain()

else

--num[que[head]],

++head;}}

}if(ans==inf)

printf

("-1");

else

printf

("%d"

,ans)

;return0;

}

最短無序連續子陣列

給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。方法一 排序演...

最短無序連續子陣列

題目描述 給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的。示例 1 輸入 2,6,4,8,10,9,15 輸出 5 解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變為公升序排序。說明 輸入...

最短無序連續子陣列

最短無序連續子陣列 給定乙個整數陣列,你需要尋找乙個連續的子陣列,如果對這個子陣列進行公升序排序,那麼整個陣列都會變為公升序排序。你找到的子陣列應是最短的,請輸出它的長度。示例 1 輸入 2,6,4,8,10,9,15 輸出 5解釋 你只需要對 6,4,8,10,9 進行公升序排序,那麼整個表都會變...