給定乙個字串,請找出其中長度最長且不含有重複字元的子串,計算該子串長度。
輸入描述:
輸入型別為字串,例如」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這個位置的索引已經不能...