1. 程式人生 > 實用技巧 >c++ string find(), rfind(), find_first_of(),find_last_of()

c++ string find(), rfind(), find_first_of(),find_last_of()

find(), rfind()

函式原型:

int find(const string& str, int pos = 0) const; //查詢str第一次出現位置,從pos開始查詢

int find(const char* s, int pos = 0) const; //查詢s第一次出現位置,從pos開始查詢

int find(const char* s, int pos, int n) const; //從pos位置查詢s的前n個字元第一次位置

int find(const char c, int pos = 0) const; //查詢字元c第一次出現位置

int rfind(const
string& str, int pos = npos) const; //查詢str最後一次位置,從pos開始查詢 int rfind(const char* s, int pos = npos) const; //查詢s最後一次出現位置,從pos開始查詢 int rfind(const char* s, int pos, int n) const; //從pos查詢s的前n個字元最後一次位置 int rfind(const char c, int pos = 0) const; //查詢字元c最後一次出現位置

find_first_of(),

  • 用法:str.find_first_of(str1,pos)
  • 說明:從pos位置開始查詢str1,從前往後,只要查到str1中的任何一個字元有則返回其在str中的索引值

find_last_of()

  • 用法:str.find_last_of(str1,pos)
  • 說明:從pos位置開始查詢,從後往前,查到str1中的任何一個字元則返回其str中的索引值

例題:leetcode 345題:反轉字串中的母音字母

輸入:hello
返回:holle

class Solution {
public:
    string reverseVowels(string s) {
        int left=0,right=s.size()-1;
        
while(left<right) { left=s.find_first_of("aeiouAEIOU",left); right=s.find_last_of("aeiouAEIOU",right); if(left<right) { swap(s[left++],s[right--]); } } return s; } };