首页 > C/C++语言 > C/C++数据结构 > C++数据结构之字符串操作
2006
12-08

C++数据结构之字符串操作


/*********************************************
*程序:  求最大的排列相同数                  *
*作者:  flyli(programfan(asoka))            *
*版本: 数据结构题目            *
*程序说明:目的是求出两个字串符的最大排列相 *
*          同数 ,比如abfced和axdfmbe的最大排 *
*          列相同数就是3(ade),当然ad也是排列 *
*         相同数,但是不是最大的            *
*********************************************/


# include <iostream>
using namespace std;


/**************************************
*建立一个类,作用是求出最大排列相同数 *
**************************************/
class SameString
{
public:
       SameString(char*,char*);  //构造函数
       int SS_MaxString(void);
       void text();              //为了初始化两个内部成员的函数
private:
       int SS_ALength;            
       int SS_BLength;             //2个字串符的长度
       char* SS_StringA;    
       char* SS_StringB;           //2个字串符的地址 
       int SS_MaxString(int,int);  //求出最大排列数的函数
       int SS_max(int,int);         //求出2个数中较大的那个
       int SS_length(char *);      //量一个字串符长度的函数
      
};
/**********************************
*构造函数,接受2个字串符的首地址  *
**********************************/
SameString::SameString(char* m,char* n)
{
    SS_StringA = m;
    SS_StringB = n;    
}
/*********************************
*     次类的外部接口函数         *
*     可以用来初始2个成员        *
*     和打开程序的核心函数       *
*********************************/
int SameString::SS_MaxString(void)
{
    SS_ALength = SS_length(SS_StringA);
    SS_BLength = SS_length(SS_StringB);
    SS_MaxString(SS_ALength,SS_BLength);   
}
/***********************************
*核心函数,接受2个字串符还没有处理 *
*的字符的个数                      *
***********************************/
int SameString::SS_MaxString(int m,int n)
{
    if(m == 0||n == 0)return 0;
    else if(*(SS_StringA+m-1)==*(SS_StringB+n-1))return SS_MaxString(m-1,n-1)+1;
    else return SS_max(m,n);
}
/**********************************
*一个简单的求最大值的函数,返回较 *
*大的那个值                       *
**********************************/
int SameString::SS_max(int m,int n)
{
    if(m == 0||n == 0)return 0;
    int a = SS_MaxString(m-1,n);
    int b = SS_MaxString(m,n-1);
    if(a>b)return a;
    else return b;      
}
/*********************************
*通过一个字串符的首地址算出它的字*
*符个数                          *
*********************************/
int SameString::SS_length(char *m)
{
   char *p = m;
   int i = 0;
   while(*p!=’\0′)
   {
       p++; 
       i++;            
   } 
   return i;  
}


/***********************************
* 嘿嘿,这就是用来测试这个类的主函 *
*数了,呵呵^_^                     *
***********************************/
int main(void)
{
    char m[]=”aabcdefghij”;
    char n[]=”acbcdea”;
    int i;
    SameString a(m,n);
    i=a.SS_MaxString();
    cout<<i;
    system(“pause”);
    return 0;
}


C++数据结构之字符串操作》有 5 条评论

  1. aa12 说:

    不太懂……

  2. aa12 说:

    我没学过这个所以不看不懂耶

  3. sulongyang 说:

    没学过啊

  4. 97xxoo 说:

    支持了。。。。

留下一个回复