學習演算法部落格 第二章 字串是否包含問題

2021-06-16 07:57:05 字數 1498 閱讀 8262

出處:

自己實現一下:

#include #include #define invalid 0

#define true 1

#define false 0

typedef int bool;

//o(m*n)方法 找字串是否都在原字串中出現

bool findsubstrfunc1(const char *str, const char *substr)

} if (*str == '\0')

} return true;

}//沒有寫排序函式,這裡僅僅假設傳來的兩個字串都經過排序了 o(m*n)以下

bool findsubstrfunc2(const char *str, const char *substr)

if (*str == *substr)

if ( *str > *substr )

} if (*str == '\0' && *substr != '\0')

else

}//o(m+n)方法,用陣列,或者hash表 找字串 是否都在原字串出現

bool findsubstrfunc3(const char *str, const char *substr)

; for (;*str != '\0'; ++str)

for (; *substr != '\0'; ++substr) }

return true;

}#define shift 3

#define mask 0x07

void setbit(char *hash, int bit)

void clearbit(char *hash, int bit)

char testbit(char *hash, int bit)

//用bitmap 方法 找字串看是否都在原字串中

bool findsubstrfunc3_bitmap(const char *str, const char *substr)

; for (; *str != '\0'; ++str)

for (; *substr != '\0'; ++substr)

return true;

}//找出字串中 第乙個只出現一次的字元,dcldallf 就列印'd'乙個

; for (; *str != '\0'; ++str)

else

} return false;

}//字串拷貝 由呼叫者保證目標buf有足夠位置

void strcopy(char *des, const char *src)

//下面是別人實現的一種方式,你沒有想到,以後要記得 這種拷貝的函式 很多要弄成鏈式的

//10分

//為了實現鏈式操作,將目的位址返回,加3分!

char * strcpy( char *strdest, const char *strsrc )

第二章 字元和字串處理

一 tchar c text a tchar szbuffer 100 text a string 無論使用ansi還是unicode字元,編譯器都能通過編譯。二 在使用winexec和openfile呼叫的地方,應該用createprocess和createfile呼叫來代替。三 應當遵循的基本準...

求職寶典 第二章 字串

1.字串與子串 子串行 字串是由零個或多個字元組成的有限序列,子串的定義是串中任意個連續的字元組成的子串行,並規定空串是任意串的子串,任意串是其自身的子串,2.c風格字串 c 語言通常通過 char const char 型別的指標來 c語言中的風格字串。一般來說,我們使用指標的算數操作符來遍歷 c...

第二章簡單動態字串

1.sds的定義 在redis中的字串並不是使用c語言中的char陣列儲存,而是自定義了乙個結構體sds來儲存。redis set msg hello world ok integer 3 在上述例子中,不管是key還是val都是使用sds型別儲存。free屬性的值為0,表示這個sds沒有分配任何未...