#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。思想 從頭開始擷取字串,只要後乙個元素不在擷取的字串裡,就更新擷取...