华为面试题:请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
?
已經(jīng)很久沒有寫博客了,2017年的最后一天寫一篇,用這樣的方式和2017年告別挺好的。這段時間經(jīng)歷找工作,是我這一年截止到目前最迷茫的時期。看看程序,思考能讓我冷靜下來,不被雜事打擾,前天看到了華為的一道面試題,今天晚上解出來了,沒有測試內(nèi)存和時間。通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個字符串壓縮程序,將字符串中連續(xù)出席的重復(fù)字母進(jìn)行壓縮,并輸出壓縮后的字符串。壓縮規(guī)則: 1、僅壓縮連續(xù)重復(fù)出現(xiàn)的字符。比如字符串"abcbc"由于無連續(xù)重復(fù)字符,壓縮后的字符串還是"abcbc"。 2、壓縮字段的格式為"字符重復(fù)的次數(shù)+字符"。例如:字符串"xxxyyyyyyz"壓縮后就成為"3x6yz"。要求實現(xiàn)函數(shù):void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr); 輸入pInputStr: 輸入字符串lInputLen: 輸入字符串長度 輸出 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;注意:只需要完成該函數(shù)功能算法,中間不需要有任何IO的輸入輸出示例輸入:“cccddecc” 輸出:“3c2de2c” 輸入:“adef” 輸出:“adef” 輸入:“pppppppp” 輸出:“8p”
?
##代碼塊代碼使用c++編寫,并附帶運行結(jié)果截圖。直接上代碼不解釋
#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)
{ ?
? ? int temp=1,k=0;
char j,m;
for(int i=0;i<lInputLen-1;i++)
{
if(pInputStr[i]==pInputStr[i+1])
{
temp++;
}
else
{ ??
if(temp>1&&temp<10)
{
pOutputStr[k++]=temp+'0';
//pOutputStr[k++]=pInputStr[i];
//temp=1;
}
if(temp>=10)
{ ?
pOutputStr[k++]=(temp/10)+'0';
pOutputStr[k++]=(temp%10)+'0';
//pOutputStr[k++]=pInputStr[i];
//temp=1;
}
pOutputStr[k++]=pInputStr[i];
temp=1;
}
}
pOutputStr[k++]=pInputStr[lInputLen-1];
pOutputStr[k]='\0';
};
int main()
{ ? ?
char p[7];
cin>>p;
long n=strlen(p);
char q[7];
stringZip(p,n,q);
cout<<q;;
system("pause");
return 0;
}
?
?
認(rèn)真試過程序后在說結(jié)果,不要看了程序不試一下.
總結(jié)
靜下心來看程序,給我很多安寧。面對面試重要的是思路,其次是編程技巧。所以看是近幾年還是前幾年的題庫,我個人覺得都是可以的,畢竟,我學(xué)的是打魚的技巧,在哪個地方打魚的區(qū)別不是太大。###轉(zhuǎn)載請備注鏈接有問題請?zhí)岢鲋刚?#xff0c;共同學(xué)習(xí)進(jìn)步。
?
總結(jié)
以上是生活随笔為你收集整理的华为面试题:请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++实现简易数据库
- 下一篇: 用计算机浏览电子图片,电脑制作电子图片库