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

晨曦之光 发布于 2012/03/09 14:17
阅读 182
收藏 0

 题目要求:

转换字符串——插入字符的个数,如字符串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=;
            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")!=)
    
{
        
if(stricmp(sinput,"i")==)
        
{
            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);
    }

}

 

运行结果如下:


原文链接:http://blog.csdn.net/livelylittlefish/article/details/2132994
加载中
返回顶部
顶部