美文网首页编程之美
BoP——3.1字符串及其循环字符串是否包含另一个字符串

BoP——3.1字符串及其循环字符串是否包含另一个字符串

作者: Myth52125 | 来源:发表于2017-10-18 16:33 被阅读0次

    题目

    方法一

    循环字符串挨个对比目标字符串
    低效

    方法二

    空间换时间。
    ABCD->ABCDA->ABCDAB->ABCDABC->ABCDABCD

    然后在比较,省去了,循环的额外开销。
    但是,同时需要注意,目标字符串不能大于原字符串

    #include <iostream>
    #include <cstring>
    bool hasStr1(char *source,size_t len,char *target)
    {
        char tmp=source[0];
        for(int i=0;i<len-1;i++)
        {
            source[i]=source[i+1];
        }
        source[len-1]=tmp;
    
        if(strstr(source,target))
        {
            return true;
        }
        return false;
    }
    
    using namespace std;
    bool hasStr2(string source,string target)
    {
        if(source.size()<target.size())
        {
            return false;
        }
        for(int i=0;i<source.size();i++)
        {
            if(strstr(source.c_str(),source.c_str()))
            {
                return true;
            }
            source.push_back(source[i]);
        }
        return false;
    }
    

    相关文章

      网友评论

        本文标题:BoP——3.1字符串及其循环字符串是否包含另一个字符串

        本文链接:https://www.haomeiwen.com/subject/zareuxtx.html