BF算法 C++实现

2019-03-15  本文已影响0人  假程序员
//
//  main.cpp
//  BF
//
//  Created by apple on 2019/3/15.
//  Copyright © 2019年 apple. All rights reserved.
//

#include <iostream>
using namespace std;

int bf(string str, string temp)//返回值是数组下标
{
    int i = 0;//i,j均是数组下标
    int j = 0;
    while (i<(int)str.length() && j<(int)temp.length())
    {
        if (str[i] == temp[j])//逐个字符进行对比
        {
            i++;
            j++;
        }
        else
        {
            i = i - j;//i回溯
            i = i + 1;//回溯的位置已经失配了,应该从下一个位置重新开始匹配
            j = 0;
        }
    }
    if (j == (int)temp.length())//j超出数组下标范围,即整个temp以完全匹配
    {
        return i - j;//本轮匹配的开始位置
    }
    else
        return -1;//未匹配
};


int main(int argc, const char * argv[]) {
    string str = "asdfghjkl";
    
    cout << bf(str, "as")<<endl;
    cout << bf(str, "fg")<<endl;
    cout << bf(str, "kl")<<endl;
    cout << bf(str, "sk")<<endl;
    return 0;
}
0
3
7
-1
Program ended with exit code: 0
上一篇下一篇

猜你喜欢

热点阅读