1,字串類中的新功能(本文**已整合到字串類——字串類的建立(上)中,這裡講述函式實現原理):
2,子串查詢(kmp 演算法直接運用):
1,int indexof(const char* s) const;
2,int indexof(const string& s) const;
3,子串查詢成員函式的宣告:
int indexof(const char* ) const;
int indexof(const string& s) const;4,子串查詢成員函式的定義:
13,在字串中將指定的子串刪除:int string::indexof(const
char* s) const
//子串查詢,返回下標25
6int string::indexof(const string &s) const
7
1,string& remove(const char* s);
2,string& remove(const string& s);
1,根據 kmp 在目標字串中查詢子串的位置;
2,通過子串位置和子串長度進行刪除;
3,刪除指定字串成員函式的宣告:
string& remove(int i, int len);
string& remove(const char* s);
string& remove(const string& s);4,刪除指定字串成員函式的定義:
14,字串的減法操作定義(operator - ):/*刪除下標 i 處長度為 len 的字串
*/2 string& string::remove(int i, int len) //
和 insert() 返回的是相同的函式,還可
以以字串類繼續訪問,如檢視刪除後的字串等313
14 m_str[n] = '
\0'; //
這裡為什麼是 n,因為n是不斷增加的,直到 m 為等於 length
15 m_length = n; //
不應該是 m_length - n 嗎?16}
1718
return *this;19
}2021 string& string::remove(const
char *s) //
刪除子串
2225
26 string& string::remove(const string &s) //
刪除子串
27
1,使用 remove 實現字串間的減法操作;
1,字串自身不被修改;
2,返回產生的新串;
2,減法操作符過載的宣告:
string operator - (const string& s) const;
string operator - (const char* s) const;
string& operator -= (const string& s);
string& operator -= (const char* s);3,減法操作符過載的定義:
1 string string::operator - (const string& s) const5,字串中的子串替換://字串自身會被改變25
6 string string::operator - (const
char* s) const
//字串自身會被改變710
11 string& string::operator -= (const string& s) //
字串自生不會被改變
1215
16 string& string::operator -= (const
char*s)
17
1,string& replace(const char* t, const char* s);
2,string& replace(const string& t, const char* s);
3,string& replace(cosnt char* t, const string& s);
4,string& replace(const string& t, const string& s);
5,子串替換成員函式的宣告:
string& replace(const char* t, const char* s);
string& replace(const string& t, const char* s);
string& replace(const char* t, const string& s);
string& replace(const string& t, const string& s);6,子串替換成員函式的定義:
16,從字串中建立子串:/*用 s 替換字串中的 t
*/2 string& string::replace(const
char* t, const
char*s)311
12return *this;13
}1415 string& string::replace(const string& t, const
char*s)
1619
20 string& string::replace(const
char* t, const string&s)
2124
25 string& string::replace(const string& t, const string&s)
26
1,string sub(int i, int len) const;
1,以 i 為起點去長度為 len 的子串;
2,子串提取不會改變字串本身的狀態;
2,從字串中建立子串成員函式的宣告:
string sub(int i, int len) const; // 因為這裡不會改變當前字串狀態,所以為 const 成員函式;3,從字串中建立子串成員函式的定義:
1 string string::sub(int i, int len) const7,本節課測試**://查詢當前字串中第 i 個位置長度為 len 的字串216
17 str[len] = '\0'
;18 ret = str; //
返回子串
1920
free
(str);21}
22else
2326
27return
ret;
28 }
1 #include 2 #include "8,小結:dtstring.h
"3 #include "
malloc.h
"4 #include 5
6using
namespace
std;
7using
namespace
dtlib;89
intmain()
10
1,字串類是工程開發中必不可少的元件;
2,字串中應該包含常用字串操作函式:
1,增:insert,operator +,...;
1,當前字串增加;
2,刪:remove,operator -,...;
1,當前字串刪除;
3,查: indexof,...
1,當前字串查詢;
4,改:replace,...
1,當前字串更改;
字串 KMP演算法
而kmp演算法在字串匹配方法中乙個很著名並且很聰明的演算法,當然也確實比較難理解。甚至於有程式設計師因為無法理解kmp演算法而直接改用暴力匹配。本身自己學演算法起步較晚,第一次接觸到kmp演算法已經是研究生畢業一年了。雖然帶著研究生的學歷背景,但是剛開始看的時候依然是一臉懵逼。看了很多博主的講解總算...
字串 KMP演算法
而kmp演算法在字串匹配方法中乙個很著名並且很聰明的演算法,當然也確實比較難理解。甚至於有程式設計師因為無法理解kmp演算法而直接改用暴力匹配。本身自己學演算法起步較晚,第一次接觸到kmp演算法已經是研究生畢業一年了。雖然帶著研究生的學歷背景,但是剛開始看的時候依然是一臉懵逼。看了很多博主的講解總算...
字串演算法 KMP演算法
給定字串m和n m比n長 找出n在m中出現的匹配位置。說白了,就是乙個簡單的字串匹配。例如 首先,字串 bbc abcdab abcdabcdabde 的第乙個字元與搜尋詞 abcdabd 的第乙個字元進行比較。因為b與a不匹配,所以搜尋詞後移一位。因為b與a不匹配,搜尋詞再往後移。就這樣,直到字串...