C++的string类提供了多种查找方法,其中一些可以实现高效的查找。
find()方法:这是最基本的查找方法,它从字符串的起始位置开始查找指定的子串,如果找到了则返回子串在原字符串中的起始位置,否则返回string::npos。find()方法的时间复杂度为O(n),其中n为原字符串的长度。rfind()方法:与find()方法相反,rfind()方法从字符串的末尾开始查找指定的子串,如果找到了则返回子串在原字符串中的结束位置(不包括结束字符),否则返回string::npos。rfind()方法的时间复杂度同样为O(n)。find_first_of()方法:该方法可以在原字符串中查找指定字符集中的任意一个字符,并返回第一个匹配的位置。如果没有找到则返回string::npos。该方法的时间复杂度为O(m),其中m为指定字符集的大小。find_last_of()方法:与find_first_of()方法相反,find_last_of()方法可以在原字符串中查找指定字符集中的任意一个字符,并返回最后一个匹配的位置。如果没有找到则返回string::npos。该方法的时间复杂度同样为O(m)。find_first_not_of()方法:该方法可以在原字符串中查找指定字符集之外的任意一个字符,并返回第一个匹配的位置。如果没有找到则返回string::npos。该方法的时间复杂度为O(n)。find_last_not_of()方法:该方法可以在原字符串中查找指定字符集之外的任意一个字符,并返回最后一个匹配的位置。如果没有找到则返回string::npos。该方法的时间复杂度同样为O(n)。除了以上几种查找方法外,C++的string类还支持正则表达式匹配,可以使用regex_search()方法进行高效查找。正则表达式匹配的时间复杂度通常比基本的字符串查找方法要高,但是在处理复杂的文本数据时非常有用。