已知乙個字串,只含有小寫字母,求這個字串的每個字元都不相同的最長子串的長度。
比如:abcd 結果是4
abcab 結果是3
用乙個26個元素的整形陣列表示乙個字串中是否含有某個字元。a~b分別對映到陣列元素0~25。
用兩個指標分別指向字串的第乙個和第二個元素,用第二個指標從左往右掃瞄字串。每掃瞄乙個字元,根據陣列中對應的值來判斷這個字元是否已經出現。
如果沒出現,則繼續掃瞄,同時更新已知不相同子串的最大長度。
如果出現過,那麼向右移動第乙個指標,直到剛才重複的那個字元不再重複,然後繼續上面的工作。
#include #include #include int lns(char *str){
int length, max = 1, temp;
int i, j;
int a[26];
length = strlen(str);
memset(a, 0, sizeof(a));
a[str[0] - 'a'] = 1;
i = 0;
j = 1;
temp = 1;
while((j < length) && (i < length - max)){
// printf("j= %d, i=%d\n", j,i);
// printf("result:%d", a[str[j] - 'a']);
if(a[str[j] - 'a'] =&
求字串的不重複字元的最長子串長度的問題
已知乙個字串,只含有小寫字母,求這個字串的每個字元都不相同的最長子串的長度。比如 abcd 結果是4 abcab 結果是3 思路 用乙個26個元素的整形陣列表示乙個字串中是否含有某個字元。a b分別對映到陣列元素0 25。用兩個指標分別指向字串的第乙個和第二個元素,用第二個指標從左往右掃瞄字串。每掃...
求字串中不含重複字元的最長子串
今天逛脈脈,在上面看到乙個求字串中不含重複字元的最長子串,如果突然看到這個題,當時真的是寫不出,更何況最優解了,這個題以前出去面試的時候被考到過,當時也沒有寫出來,所以在網上看了這道題的答案後自己試著寫了下,並將自己的理解記錄下來 總體思路 1.設定兩個游標,一左一右,剛開始都設定成0,設定乙個se...
最長不重複字串
一直以為這個方法是對的,後來發現這種方法是錯誤的,不能處理巢狀的情況,如 adercijckega 稍後再修正!最近面試遇到這題,再網上參考了一些blog,自己歸納出方法並用c 實現。問題 求出字串中最長不重複的字串,如 abccdefgchi 最長不重複字串為defgchi.分析 1.定義乙個二維...