BF算法 C++实现

//
//  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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容