查詢無重複最長子串

2021-10-01 02:47:26 字數 1253 閱讀 8524

給定乙個字串,請找出其中長度最長且不含有重複字元的子串,計算該子串長度。

輸入描述:

輸入型別為字串,例如」pwwkew「

輸出描述:

輸出型別為整型, 例如 5

示例1輸入

pwwkew

輸出說明

無重複字元的最長子串是"wke",其長度為 3

思路:利用map,value記錄是否出現過。

#include

#include

#include

using namespace std;

int main()

string s,res="";

cin>>s;

unordered_maph;

int max = 0,j=0,i=0;   

while(iif(h[s[j]]==0)

h[s[j]]=1;

j++;

if(max<=(j-i))

max=j-i;

else

h[s[i]]=0;

i++;

cout另一種map:

#include

#include

#include

usingnamespacestd;

classdistinctsubstring{

public:

int longestsubstring(string a,int n)

mapmap_table;

int pre=0;

int*dp=new int[n]();

for(inti=0;iif(map_table.count(a[i]))

if(map_table[a[i]]>=(i-pre))

dp[i]=i-map_table[a[i]];

else

dp[i]=pre+1;

else

dp[i]=pre+1;

pre=dp[i];

map_table[a[i]]=i;

int res=0;

for(inti=1;iif(dp[i]>res)

res=dp[i];

delete dp;

dp=null;

return res;

intmain()

strings("aabcb");

distinctsubstring d;

cout<

return0;

無重複字元最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

無重複字元最長子串

題目描述 給定乙個字串,找出不含有重複字元的 最長子串 的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是子串行而不是子串 i...

無重複的最長子串

1 題目 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。窮舉出所有的字串 i,j兩次迴圈 i,j 就可以表示所有子串的情況 思路 判斷是否唯一,跳出迴圈 掏出迴圈思考了好久,abcbe 為何b包含在abc中直接跳出因為be其實在b這個位置的索引已經不能...