• 字符串移位[源:《编程之美》]


    《编程之美》221页,问题:字符串scr=“AABCD”,字符串des="CDAA",循环移位src,是否包含串des?

    首先考虑的是移位的问题,有两种可能,要么左移,要么右移,书中采用的是左移的方式。

    在移动AABCD之后,得到 ABCDA,问题就在于这个最先移动的A放在哪?根据前面的学习,马上可以联想到找个临时变量暂时存放起来,等到移位之后,再插入到合适位置。和直接插入排序的代码有很多相似之处。
    参考:直接插入排序 http://www.cnblogs.com/tinaluo/p/5248179.html

    再看最外层的移动次数,AABCD,长度为5,就移动5次,最后一次移位又回归到原样。
    而,内层移动只需要4次,也就是把最末端的D移到最前面所需要的次数,等于len-1;

    #include <iostream>
    using namespace std;
    int main(void)
    {
        char src[]="AABCD";
        char des[]="CDAA";
        int len=strlen(src);
        for(int i=0;i<5;i++)
        {
            char ch=src[0];/*ch总是等于头部数据*/
            for(int j=0;j<len-1;j++)/*内部移动*/
                src[j]=src[j+1];
            src[len-1]=ch;/*插入数据*/
            if(!strstr(src,des))/*调用库函数strstr()查找串*/
            cout<<"匹配失败!"<<endl;
            else
            {
                cout<<"匹配成功!"<<endl;
                break;
            }
        }
        return 0;
    }

    这本书出现太多错误,仅仅看了一道题,代码就错了几行!
    比如库函数strstr()的用法,是不成功时返回NULL;

    char *strstr(char *src,char *des)
        {....}
        /*匹配成功,返回第一次出现des的位置指针*/
        /*匹配失败,返回NULL*/
  • 相关阅读:
    意法半导体STM32MP157A MPU加持,米尔科技首款ST Linux开发板MYD-YA157C评测
    基于nxp i.mx8m mini的新一代高性价比核心板之王
    Spring IoC容器-ApplicationContext
    XML文档
    Spring资源访问
    Spring框架简介
    SpringBoot整合RabbitMQ
    发布订阅模式
    主题模式
    RabbitMQ Work Queues(工作队列)
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5251783.html
Copyright © 2020-2023  润新知