字符串搜索
字符串搜索
掌握字符串函数的使用:字符串搜索。
搜索是在主串里找字符或子串第一次(或每一次)出现的位置。string 提供 s.find(t):找到则返回起始下标(size_t),找不到返回 string::npos。也可以自己写双重循环:外层枚举起始位置,内层比较子串。找单个字符时,find 与手写扫描等价。继续向后找时,把上次下标加一作为下一次 find 的起点。
客观题会问 find 的返回值、从 0 数还是从 1 数、找不到时该怎样判断。编程题常见:某个关键词出现了几次、第一次出现在第几位、是否包含指定片段。认证标准规定考试时长为 120 分钟,写编程前先约定「下标从 0 还是输出第几个字符」,与题面一致。
string s = "banana";
size_t p = s.find("an");
if (p != string::npos) cout << p; // 1
size_t q = s.find("an", p + 1);
if (q != string::npos) cout << q; // 3
用 == npos 判断失败,不要把 -1 硬写成约定而不查类型;重叠子串(如在 aaa 里找 aa)要看题意是否允许重叠。
执行下面 C++ 代码后将输出 2。( )
int main()
{
string str="gEsP is Interesting";
int x = str.find("s");
cout << x << endl;
cout << endl;
return 0;
}
下列程序输出的是( )
string str = "Hello,CHAD";
cout << str.find("A") << '\n';
下列程序输出的是 3。( )
string str="CHADai";
size_t pos = str.find('D');
cout<<pos<<endl;
下列可执行程序段中,最后 pos 的值是 4
string str="chenADai";
int pos = str.find('D');
--pos&11;
C++ 语句 string s="Gesp Test"; 执行 s.rfind("e") 以后,输出的是( )