c语言数据结构 字符串,C++数据结构之字符串操作

/*********************************************

*程序:  求最大的排列相同数                  *

*作者:  flyli(programfan(asoka))            *

*版本: 数据结构题目            *

*程序说明:目的是求出两个字串符的最大排列相 *

*          同数 ,比如abfced和axdfmbe的最大排 *

*          列相同数就是3(ade),当然ad也是排列 *

*         相同数,但是不是最大的            *

*********************************************/

# include

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<

system(“pause”);

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值