面试题目(2)——转换字符串-插入字符个数

 题目要求:

转换字符串——插入字符的个数,如字符串aaab,插入字符个数后变为aaa3b1。

代码如下:

/************************************************************************
 * 转换字符串——插入字符的个数
 * 如,aaab,变为aaa3b1
 ***********************************************************************
*/


#include 
< stdlib.h >
#include 
< stdio.h >
#include 
< string .h >

#define  MAXCOUNT 2*100     // 输入的字符串长度不能超过100

char   * transformation( char   * str)
{
    
int len=strlen(str);
    
char *buf=new char[len+1];    //存放某个字符的个数即该字符后的字符串

    
char *p=str;
    
char *q=p+1;
    
int count=1;
    
while(*q)
    
{
        
if(*p==*q)
        
{
            count
++;
            p
++;
            q
++;
        }

        
else
        
{
            itoa(count,buf,
10);
            
int nbits=strlen(buf);
            strcat(buf,q);
            
*q=0;
            strcat(str,buf);
            q
+=nbits;
            p
=q;
            q
=p+1;
            count
=1;
        }

    }

    
    
//最后一个相同字符的个数
    itoa(count,buf,10);
    strcat(str,buf);

    delete []buf;
    buf
=NULL;
    
return str;
}


// 显示菜单
void  show_menu()
{
    printf(
"--------------------------------------------- ");
    printf(
"input command to test the program ");
    printf(
"   i or I : input string to test ");
    printf(
"   q or Q : quit ");    
    printf(
"--------------------------------------------- ");
    printf(
"$ input command >");
}


void  main()
{
    
char sinput[10];
    
char str[MAXCOUNT];

    show_menu();

    scanf(
"%s",sinput);
    
while(stricmp(sinput,"q")!=0)
    
{
        
if(stricmp(sinput,"i")==0)
        
{
            printf(
"  please input an string:");
            scanf(
"%s",&str);
            printf(
"   before transformation: %s ",str);
            
char *pstr=transformation(str);
            printf(
"  after  transformation: %s ",pstr);
        }


        
//输入命令
        printf("$ input command >");
        scanf(
"%s",sinput);
    }

}

 

运行结果如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值