找出乙個字串中不含重複字元的最長子字串

2021-06-27 21:44:58 字數 959 閱讀 8846

找出乙個字串中不含重複字元的最長子字串

採用動態規劃,若已知以第i-1位字元為結尾的最長子字串長度l[i-1],並知道第i-1位字元上一次出現的位置k,就可以求出以第i個字元為結束的最長子字串(min(l[i-1]+1,i-k)。

遍歷字串就可以求出最長子串,時間複雜度為o(n),**如下

#include "stdafx.h"

#include

using namespace std;

#define min(a, b) (((a) < (b)) ? (a) : (b))

void find(const char* str,int len)

int prev[255];

for(int i=0; i<255; i++)

int *maxlen = new int[len];

maxlen[0] = 1;

prev[str[0]] = 0;

for(int i=1; i

if(prev[str[i]] != -1)//occur

prev[str[i]] = i;

}int l = 0;

for(int i=0; i

}for(int i=0; i

cout<}}

}int main(void)

;for(int i = 0; arr[i]; ++i)

//find("abcabc",6);

return 0;

}計算字串中不包含重複字元的最大子字串長度,演算法應道盡可能高效。

例:「xabcdaef」中"xabcd"和"bcdaef"都不含重複字元的子字串,其中"abcda"則是包含重複子字串的。最大不含重複字元的子字串"bcdaef"的長度是6,因此返回值:6。

int search(const char* test)

else }

return maxlen;}

python找出乙個字串中的重複字元

使用 string.count str,beg 0,end len string 方法 返回 str 在 string 裡面出現的次數,beg和end 被指定 則返回指定範圍內 str 出現的次數 str hello same diff for i in range len str ifstr.co...

給定乙個字串,請找出其中不含有重複字元的最長子串

package main import fmt 給定乙個字串,請找出其中不含有重複字元的最長子串 eg 輸入 abcacabb 輸出 abc func getlongeststring ss string string else 遍歷storemap找到長度最長的string maxlenstr f...

給定乙個字串,找出不含有重複字元的最長子串的長度

usr bin env python coding utf 8 time 2020 4 12 21 29 author 不愛碼 的碼農 site file s9.py software pycharm 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長...