華為機試題2,華為機試題
題二:題目描述(40分):
通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個字符串壓縮程序,將字符串中連續出席的重復字母進行壓縮,並輸出壓縮後的字符串。
壓縮規則:
1. 僅壓縮連續重復出現的字符。比如字符串"abcbc"由於無連續重復字符,壓縮後的字符串還是"abcbc".
2. 壓縮字段的格式為"字符重復的次數+字符"。例如:字符串"xxxyyyyyyz"壓縮後就成為"3x6yz"
要求實現函數:
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);
【輸入】 pInputStr: 輸入字符串
lInputLen: 輸入字符串長度
【輸出】 pOutputStr: 輸出字符串,空間已經開辟好,與輸入字符串等長;
【注意】只需要完成該函數功能算法,中間不需要有任何IO的輸入輸出
示例
輸入:“cccddecc” 輸出:“3c2de2c”
輸入:“adef” 輸出:“adef”
輸入:“pppppppp” 輸出:“8p”
我的程序:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin>>s;
for(int i=0;i<s.size();i++)
{
int t=1;
for(int j=i+1;j<s.size();j++)
{
if(s[j]==s[i])
++t;
}
if(t>1)
{
s.erase(i+1,t-1);
char p[10]; //VC6.0不能用to_string;
itoa(t,p,10);
s.insert(i,p);
}
}
cout<<s<<endl;
return 0;
}