對函式引數判斷乙個函式的引數判斷是應該最先考慮的,一般判斷下面的條件。
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...