LintCode(easy)字符串查找

来源:互联网 发布:淘宝上传工具 编辑:程序博客网 时间:2024/05/22 13:00
class Solution {public:    /**     * Returns a index to the first occurrence of target in source,     * or -1  if target is not part of source.     * @param source string to be scanned.     * @param target string containing the sequence of characters to match.     */  int strStr(const char *source, const char *target) {        if(!target||!source) return -1;        string A(source); int m;     string B(target);  vector<int> v1;    // 截取字符串前三个字符    if (A.size() < B.size()) return -1;    else{        if (B.size() > 3){            for (int i = 0; i < A.size(); i++){                if (A[i] == B[0] && A[i + 1] == B[1] && A[i + 2] == B[2])                v1.push_back(i + 3);            }            if (v1.size() == 0) return -1;            for (auto c : v1){                for (m = 0; m < B.size()-3; m++)                if (A[c+m] != B[3+m])   break;                          if (m == B.size()-3)                     return c - 3;            }        }        else{            for (int i = 0; i < A.size() - B.size() + 2; i++){                for (m = 0; m < B.size() ; m++)                    if (A[i+m] != B[m]) break;                if (m == B.size())                    return i+m - B.size();             }        }    }   return -1;     }};
0 0
原创粉丝点击