首页 > 代码库 > 华为机试题之字符串压缩问题

华为机试题之字符串压缩问题

通过键盘输入一串小写字母(a~z)组成的字符串。
                    请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,
                    并输出压缩后的字符串。 
                     
压缩规则:  1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".  
            2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"   
#include <iostream>#include <string.h>using namespace std;int main(){cout<<"请输入。。。"<<endl;char str[100]="";char outstr[100]="";cin.getline(str,100);int len=strlen(str);int i=0,j=0;int cnt=1;char c=str[0];for(i=1;i<len;i++){	if(str[i]==c)	{       cnt++;	}	else	{		if(cnt==1)		{		outstr[j++]=c;		}		else		{         outstr[j++]=cnt+‘0‘;		 outstr[j++]=c;		}	c=str[i];	cnt=1;	}	 	} if(c != str[j-1])     {		    if(cnt == 1)          {                   outstr[j++] = c;          }          else          {               outstr[j++] = cnt + ‘0‘;               outstr[j++] = c;          }     }      cout<<outstr<<endl;	return 0;}

 

华为机试题之字符串压缩问题