好久沒寫過部落格,寫一道今天的筆試題
阿新 • • 發佈:2019-02-15
要求從str1字串中找出str2字串最後一次出現的位置,最簡單應該是從後往前找,當時估計有點緊張沒多想,結果可想而知,回來自己寫了兩種實現,從後往前和從前往後,前者簡單就不貼程式碼了,後者突發奇想用了我最不擅長的遞迴來實現的,略微複雜,可讀性較差,不過還是給寫出來了,功能還算完善,支援類似ababa,中找aba,aabc中找ab,abcde中找de,後兩種其實還算簡單,考慮到就行,遞迴就是為第一種情況服務的...
歡迎交流.#include <stdio.h> int mystr(char *str1, char *str2) { int i=0,j=0,tmp=0,ok = -1; if(str1 == NULL || str2 == NULL) return -1; for(i=0,j=0; str1[i] != '\0'; i++) { if(str1[i] == str2[j]) { if(j == 0) tmp = i; else { if(str2[j+1] == '\0') ok = tmp; if(str2[j] == str2[0]) { tmp = mystr(&str1[i], str2); if(tmp == -1) break; else { ok = i+tmp; break; } } } j++; if(str2[j] == '\0') { ok = tmp; j = 0; } } else { if(j != 0) i = i - j; j = 0; } } return ok; } void main(void) { int i; char *c = NULL; char *d = NULL; char a[20] = {"ababsababababa"}; char b[6] = {"aba"}; i = mystr(a, b); printf("%d\n", i); }
本文原創,轉載請註明出處,謝謝!