使用字串程式設計的模板

2021-09-25 07:20:51 字數 2843 閱讀 1577

對函式引數判斷

乙個函式的引數判斷是應該最先考慮的,一般判斷下面的條件。

if (chars == null)    return 0;

if (chars[0] == '\0') return -1;

字串雙指標的模板

很多時候我們會用雙指標從兩邊遍歷字串,下面就是簡單的模板

bool ispalindrome(char * s)

return false 或者 true;

}

判斷乙個字元是否是給定條件中乙個

如下面判斷乙個字元是不是母音字母

bool find(char c)

利用雜湊表

很多我們再遍歷字串的時候,需要利用雜湊表,來用空間換時間。

在利用雜湊表的時候,一般都會記錄遍歷元素的情況,但是每個情況,對應的判斷語句不同

(1)如果只是在遍歷過程中記錄每類元素的個數,那就直接遍歷就可以了,最後再求出元素的元素個數的最小值/最大值

(2)如果是求不存在的元素,如上最後求雜湊錶值為0的元素

(3)如果是找到它的第乙個不重複的字元,那這個

既要記錄是否是重複元素,又要記錄不重複元素的下標,

最好的解決方法就是遇到重複就把雜湊值設為 -1(或者某個特殊值),不重複就記錄下標,最後求下標的最小值

這裡有個很特別的數(-1),它即表示已經重複,有可以表示值不為0

注意:

int char_num[128];

int firstuniqchar(char * s)

int min_len = 0x7fffffff;

for (int i = 97; i < 123; ++i)

return (min_len == 0x7fffffff ? -1 : min_len - 1);

}

判斷連續字串相當的問題

問題1:求乙個字串中,連續相當的字元數量和不連續相當的字元數量(即乙個字元)。

如:aabbcdddeffff(連續相等的有aa  bb  ddd  ffff  一共7個   不連續相等的有c e 一共2個)

麻煩點:這裡面要把當前字元和後乙個字元來比較,而且最後乙個字元不能後它的後乙個字元比較(因為字串結束了)

利用下面模板,基本上能解決類似問題

int cmpare(char* chars, int charssize)

else ++tmp;

}if (tmp == 1) equ_one += 1; //表示前面已經結束了,只是由於最後乙個字元和倒數第2字元不相等

else gre_one += tmp;//由於迴圈是在倒數第2個字元結束,所以還要排除這種情況("aabbccc"),還需要加上字元c的數量

printf("%d %d", equ_one, gre_one);

return 0;

}int main()

; char b[16] = ;

char c[16] = ;

char d[16] = ;

cmpare(d, strlen(d));

return 0;

}

模板最好的地方就   int tmp = 1;    //當前有多少個字元連續相等

因為它屬於先去變為1,如果和後面不相等值就為1,如果相等值加1,特別是當遍歷到倒數第二個字元時,不用去管結尾符的情況。

動態規劃

問題1:求兩個字串的最長公共子串

這種題就非常適合動態規劃dg

c

a

dde

0000

0000

a000

0100

0b00

0000

00c0

0010

000c00

0100

00a00

00200

0d01

000310

e000

0000

0

void getmaxsubstr(const char *str1, const char *str2)

for (int i = 0; i < len1+1; ++i)

for (int j = 0; j < len2+1; ++j)

m[i][j] = 0;

int max = 0;

int max_i = 0;

for (int i = 1; i < len1+1; ++i)

}} }

for (int i = max_i - max; i < max_i; ++i)

for (int i = 0; i < len1+1; ++i)

}

參考:

C C 程式設計 使用字串作為函式模板的實參

解決方法是宣告為非引用引數 對於非引用型別的引數,在實參演繹的過程中,會出現陣列到指標的型別轉換 這種轉型被稱為decay include include 引用傳參 template typename t inline t const maxref t const a,t const b 非引用傳參...

字串模板的使用

在資料中,一般情況下,我們都會使用,prestatement 來傳輸sql語句,然後通過pstm.setstring index,str 或者其他型別來設定佔位符?的具體值。因為安全問題,我們已經體驗到了這種設計思路的好處。而在今天的學習中,發現了基於這種佔位符思路的另外乙個應用。如果我們現在要用到...

5 使用字串庫函式

5.1 計算字串長度,函式原型如下 size t strlen const char s size t 是乙個無符號整型 unsigned int 該函式返回第乙個空字元 0前面的字元個數。include 獲得字串長度 void test strlen 5.2 字串拷貝 函式原型 char stpc...