zoukankan      html  css  js  c++  java
  • 数据结构之字符串

    #include <iostream>
    #include <cstring>
    #include <stack>
    #include <cstring>
    using namespace std;
    
    //字符串复制
    void cpystr(char*s1,char *s2)
    {
        int n2=strlen(s2);
        int j=0;
        for(int i=0; i<n2; i++)
        {
            s1[j++]=s2[i];
        }
        s1[j]='';
    }
    
    //字符串拼接
    char* concat(char *s1,char *s2)
    {
        int n1=strlen(s1),n2=strlen(s2);
        char *s=new char[n1+n2+1];
        int j=0;
        for(int i=0; i<n1; i++)
        {
            s[j++]=s1[i];
        }
        for(int i=0; i<n2; i++)
        {
            s[j++]=s2[i];
        }
        s[j]='';
        return s;
    }
    
    
    //求子串
    char* subString(char *s,int pos,int len)
    {
        char *t=new char[len];
        int j=0;
        for(int i=pos; i<pos+len; i++)
        {
            t[j++]=s[i];
        }
        t[j]='';
        return t;
    }
    
    //?????
    int compare(char *s1,char *s2)
    {
        if(s1==NULL&&s2!=NULL)
        {
            return -1;
        }
        if(s2==NULL&&s1!=NULL)
        {
            return 1;
        }
        if(s1==NULL&&s2==NULL)
        {
            return 0;
        }
        while(*s1&&*s2&&*s1==*s2)
        {
            s1++;
            s2++;
        }
        if(*s1==*s2)
        {
            return 0;
        }
        return *s1-(*s2);
    }
    
    
    //求子串的定位问题Brute-Force
    int Index_BF(char* s1,char* s2)
    {
        int i,j;
        int len1=strlen(s1);
        int len2=strlen(s2);
        for(i=0;i<len1-len2+1;i++)
        {
            j=0;
            for(;j<len2;j++)
            {
                if(s1[i+j]!=s2[j])
                    break;
            }
            if(j==len2)
                return i;
        }
        return -1;
    }
    
    
    //全排列
    void permutation(char* a,int begin,int end)
    {
        int i,j;
        if(begin == end)    //一到递归的出口就输出数组,此数组为全排列
        {
            for(i=0; i<=end; i++)
                cout<<a[i];
            cout<<endl;
        }
        else
        {
            for(j=begin; j<=end; j++)
            {
                swap(a[j],a[begin]);//for循环将begin~end中的每个数放到begin位置中去
                permutation(a,begin+1,end);//假设begin位置确定,那么对begin+1~end中的数继续递归
                swap(a[j],a[begin]);//假设begin位置确定,那么对begin+1~end中的数继续递归
            }
        }
    }
    int main()
    {
        char *s1=new char[20];
        char *s2=new char[20];
        cin>>s1>>s2;
    
        char *s=concat(s1,s2);
        cout<<"concat():"<<s<<endl;
    
        char *sub=subString(s,2,4);
        cout<<"subString(s,2,4):"<<sub<<endl;
    
        cout<<"s1:"<<s1<<endl;
        cout<<"s2:"<<s2<<endl;
        cout<<"compare():"<<compare(s1,s2)<<endl;
    
        cpystr(s1,s2);
        cout<<"strcpy():"<<s1<<endl;
    
        cout<<"s2:"<<s2<<endl;
        //permutation(s2,0,strlen(s2)-1);
        cout<<endl;
    
        cout<<"index('456123','23'):"<<Index_BF("4561230","23")<<endl;
    
    
        delete []s1;
        delete []s2;
        delete []s;
        delete [] sub;
        return 0;
    }
    


  • 相关阅读:
    (五) 子类与继承
    linux7(centos7)新系统安装后要做的事!
    CentOS7系统搭建FTP服务器
    ---Docker学习随笔---基础管理部分---
    linux系统配置本地yum源
    安装redis 6.0.6
    LNMP部署
    如何在RHEL7或CentOS 7系统下修改网卡名称(亲测有效~!)
    Mysql常用基础命令操作
    MySQL版本浅介
  • 原文地址:https://www.cnblogs.com/jasonhaven/p/7355041.html
Copyright © 2011-2022 走看看