基于字符串移位包含的问题详解

 更新时间:2013年05月28日 17:39:46   作者:  
本篇文章是对字符串移位包含的问题的解决方法进行了详细的分析介绍,需要的朋友参考下
代码如下所示:
复制代码 代码如下:

/************************************************************************/
/* 给定两个字符串s1和s2,要求判定s2是否能被s1做循环移位得到的字符串所包含
例如,给定s1 = AABCD, s2 = CDAA,返回true,给定s1 = ABCD, s2 = ACBD,返回false*/
/************************************************************************/
#include "stdafx.h"
#include <iostream>
using namespace std;
//穷举法
int IfRotateContain1(char *str1, const char *str2);
//空间换取时间法
int IfRotateContain2(char *str1, const char *str2);
int _tmain(int argc, _TCHAR* argv[])
{
    char str1[] = "AABBCD";
    char str2[] = "CDAA";
    int ret1 = IfRotateContain1(str1, str2);
    int ret2 = IfRotateContain2(str1, str2);
    cout << ret1 << endl;
    cout << ret2 << endl;
    return 0;
}
int IfRotateContain1( char *str1, const char *str2 )
{
    int len = strlen(str1);
    for (int i = 0; i < len; i++)
    {
        char temchar = str1[0];
        for (int j = 0;j < len-1; j++)
        {
            str1[j] = str1[j+1];
        }
        str1[len-1] = temchar;
        if (strstr(str1, str2) )
        {
            return 1;
        }
    }
    return 0;
}
int IfRotateContain2( char *str1, const char *str2 )
{
    int len = strlen(str1);
    char *p = new char[len*2+1];
    for (int i = 0; i < len; i++)
    {
        p[i] = str1[i];
        p[i+len] = str1[i];
    }
    for (int j = 0; j < len*2; j++)
    {
        if (strstr(str1, str2))
        {
            return 1;
        }
    }
    delete [] p;
    return 0;
}

相关文章

  • C语言实现推箱子游戏的代码示例

    C语言实现推箱子游戏的代码示例

    这篇文章主要介绍了C语言实现推箱子游戏的代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • C++11中value category(值类别)及move semantics(移动语义)的介绍

    C++11中value category(值类别)及move semantics(移动语义)的介绍

    这篇文章主要给大家介绍了C++11中value category(值类别)及move semantics(移动语义)的介绍,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • C语言实现经典windows游戏扫雷的示例代码

    C语言实现经典windows游戏扫雷的示例代码

    今天我们会用C语言实现一个经典的windows小游戏:扫雷。扫雷是一款单机小游戏,每次通关最高难度的关卡都会开心好一阵。现在学会了C语言,总算可以自己实现扫雷了。话不多说,咱们开始吧
    2022-10-10
  • VC实现屏幕截词功能的方法详解

    VC实现屏幕截词功能的方法详解

    这篇文章主要介绍了VC实现屏幕截词功能的方法详解,对于深入的理解windows程序运行原理很有帮助,需要的朋友可以参考下
    2014-07-07
  • C++中“#”号的使用技巧

    C++中“#”号的使用技巧

    本篇文章是对C++中“#”号的使用技巧进行了分析介绍,需要的朋友参考下
    2013-05-05
  • C++ 中strcpy标准写法实例详解

    C++ 中strcpy标准写法实例详解

    这篇文章主要介绍了C++ 中strcpy标准写法实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • 基于Qt实现SVG图片浏览器

    基于Qt实现SVG图片浏览器

    SVG的英文全称是Scalable Vector Graphics,即可缩放的矢量图形。本文将用Qt6制作一个简单的SVG图片浏览器,感兴趣的可以尝试一下
    2022-06-06
  • C语言实现简单计算器功能(2)

    C语言实现简单计算器功能(2)

    这篇文章主要为大家详细介绍了C语言实现简单计算器功能的第二部分,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C++详解哈夫曼树的概念与实现步骤

    C++详解哈夫曼树的概念与实现步骤

    给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近
    2022-04-04
  • C++ 封装 DLL 供 C# 调用详细介绍

    C++ 封装 DLL 供 C# 调用详细介绍

    这篇文章主要介绍了C++ 封装 DLL 供 C# 调用(以C# 调用C++ 二次封装的VLC播放库为介质,支持回调函数的封装),需要的朋友可以参考下面我文章的具体内容
    2021-09-09

最新评论