java實(shí)現(xiàn)壓縮字符串和java字符串過濾
題目一:通過鍵盤輸入一串小寫字母(a~z)組成的字符串。
請編寫一個(gè)字符串過濾程序,若字符串中出現(xiàn)多個(gè)相同的字符,將非首次出現(xiàn)的字符過濾掉。
比如字符串“abacacde”過濾結(jié)果為“abcde”。
要求實(shí)現(xiàn)函數(shù):
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
【輸入】 pInputStr:輸入字符串
lInputLen:輸入字符串長度
【輸出】 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;
【注意】只需要完成該函數(shù)功能算法,中間不需要有任何IO的輸入輸出
示例
輸入:“deefd”輸出:“def”
輸入:“afafafaf” 輸出:“af”
輸入:“pppppppp” 輸出:“p”
main函數(shù)已經(jīng)隱藏,這里保留給用戶的測試入口,在這里測試你的實(shí)現(xiàn)函數(shù),可以調(diào)用printf打印輸出
當(dāng)前你可以使用其他方法測試,只要保證最終程序能正確執(zhí)行即可,該函數(shù)實(shí)現(xiàn)可以任意修改,
但是不要改變函數(shù)原型。一定要保證編譯運(yùn)行不受影響。
題二:題目描述:
通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個(gè)字符串壓縮程序,將字符串中連續(xù)出席的重復(fù)字母進(jìn)行壓縮,并輸出壓縮后的字符串。
壓縮規(guī)則:
1. 僅壓縮連續(xù)重復(fù)出現(xiàn)的字符。比如字符串"abcbc"由于無連續(xù)重復(fù)字符,壓縮后的字符串還是"abcbc".
2. 壓縮字段的格式為"字符重復(fù)的次數(shù)+字符"。例如:字符串"xxxyyyyyyz"壓縮后就成為"3x6yz"
要求實(shí)現(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”
public class Test {
static void stringFilter( char InputStr[], long len, char OutputStr[]){
int[] a= new int[26];
int num=0;
int j=0;//OutputStr[]計(jì)數(shù)
for(int i=0;i<len;i++){
num = InputStr[i]-'a';
if(a[num]==0){//沒出現(xiàn)過
OutputStr[j]=InputStr[i];
j++;
a[num]=1;
}
}
}
static void stringZip( char InputStr[], long len, char OutputStr[]){
char temp=' ';
int num=1;
int point=0;
for(int i=0;i<len;i++){
if(InputStr[i]==temp){
num++;
}else{
if(num!=1){
OutputStr[point++]=(char)(num+'0');
num=1;
}
OutputStr[point++]=temp;
temp=InputStr[i];
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
char [] test={'a','a','a','c','b','b','b','a','a','c','a','d','d','d','c','d','e'};
long len=test.length;
char [] res = new char[(int) len];
stringFilter(test,len,res);
int j=res.length;
for(int i=0;i<j;i++){
if(res[i]!='\0'){
System.out.print(res[i]);
}else
break;
}
char[] res2=new char[(int) (2*len)];
stringZip(test,len,res2);
for(int i=0;i<2*len;i++){
if(res2[i]!='\0'){
System.out.print(res2[i]);
}else
break;
}
}
}
相關(guān)文章
詳解IDEA中Debug的使用和進(jìn)制轉(zhuǎn)換問題
這篇文章主要介紹了IDEA中Debug的使用和進(jìn)制轉(zhuǎn)換,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
詳解Spring Cloud Alibaba Sidecar多語言微服務(wù)異構(gòu)
這篇文章主要介紹了詳解Spring Cloud Alibaba Sidecar多語言微服務(wù)異構(gòu),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
IDEA2021.2永久激活碼最新超詳細(xì)(激活到2099)
這篇文章主要介紹了IDEA2021.2永久激活碼,是idea2021版最新激活方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java網(wǎng)絡(luò)編程之TCP程序設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程之TCP程序設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Spring實(shí)現(xiàn)Logback日志模板設(shè)置動(dòng)態(tài)參數(shù)功能
本文介紹如何在Spring應(yīng)用中實(shí)現(xiàn)Logback日志模板的動(dòng)態(tài)參數(shù)設(shè)置,通過設(shè)計(jì)traceId鏈路標(biāo)識(shí),將其動(dòng)態(tài)添加到日志輸出中,從而實(shí)現(xiàn)簡易的鏈路追蹤功能,感興趣的朋友跟隨小編一起看看吧2024-11-11

