找出字串中最長的子串

2021-09-07 22:01:53 字數 925 閱讀 8442

#include#includevoid fun1(char *a);

int main(void)

puts("bye!@~");

return 0;

}void fun1(char *p)

{ unsigned int i;

unsigned int len_word;

unsigned int len_max=0;

unsigned int place=0; //記錄指標位置

//for(i = 0;p[i]!='\0';i++) //錯誤!!!

for(i = 0;i

程式思想:

記錄每個單詞的長度,與max_len比較,比它長,則將值賦給max_len。

i記錄讀入的字元個數(包含空格),i-max_len得到的就是這個最長單詞的首字母的位置。

此程式有幾點值得注意的:

①內迴圈while(p[i]!=' ' && p[i]!='\0')   為什麼要兩個限制條件呢?

答:p[i]!=『 』這個條件很顯然,因為是以空格區分兩個子串

p[i]!='\0'這個條件是因為,最後乙個子串不是以空格結尾的,而是結束符。

②外迴圈for(i = 0;i答:內迴圈判斷最後乙個子串的時候,i一直要自加到i=len,即p[len]='\0' 的時候,才退出內迴圈。

然後進入外迴圈,此時要先執行i++,再執行判斷條件。也就是說,str[i]此時的值是str[len+1],而這個值我們無法確定,它可能是記憶體中的任何值。

如果這裡的判斷條件是str[i]!='\0',那麼程式還會再次執行內迴圈,產生錯誤!

找出字串中最長的子串

include includevoid fun1 char a int main void puts bye return 0 void fun1 char p unsigned int i unsigned int len word unsigned int len max 0 unsigned ...

找出字串的所有子字串

字首樹實現,遍歷字串。把字串中的每乙個字元都視為字首,用乙個字首樹儲存以每乙個字元為開頭的字串 舉例為 abbc 然後遍歷字首樹,把每個子樹的每一層都作為乙個字串輸出即可。import copy class trienode object def init self,word self.word w...

找出字串的最長不重複字串

這是我遇到的一道校招題目 給定一字串只包含數字,請寫乙個演算法,找出該字串中的最長不重複子串 不重複是指子串中每一元素不同於子串中其他元素 如 120135435 最長不重複子串為 201354 要求用j a或者c來寫,我用了j a。思想 從頭開始擷取字串,只要後乙個元素不在擷取的字串裡,就更新擷取...