java完成緊縮字符串和java字符串過濾。本站提示廣大學習愛好者:(java完成緊縮字符串和java字符串過濾)文章只能為提供參考,不一定能成為您想要的結果。以下是java完成緊縮字符串和java字符串過濾正文
標題一:經由過程鍵盤輸出一串小寫字母(a~z)構成的字符串。
請編寫一個字符串過濾法式,若字符串中湧現多個雷同的字符,將非初次湧現的字符過濾失落。
好比字符串“abacacde”過濾成果為“abcde”。
請求完成函數:
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);
【輸出】 pInputStr:輸出字符串
lInputLen:輸出字符串長度
【輸入】 pOutputStr: 輸入字符串,空間曾經開拓好,與輸出字符串等長;
【留意】只須要完成該函數功效算法,中央不須要有任何IO的輸出輸入
示例
輸出:“deefd”輸入:“def”
輸出:“afafafaf” 輸入:“af”
輸出:“pppppppp” 輸入:“p”
main函數曾經隱蔽,這裡保存給用戶的測試進口,在這裡測試你的完成函數,可以挪用printf打印輸入
以後你可使用其他辦法測試,只需包管終究法式能准確履行便可,該函數完成可以隨意率性修正,
然則不要轉變函數原型。必定要包管編譯運轉不受影響。
題二:標題描寫:
經由過程鍵盤輸出一串小寫字母(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”
public class Test {
static void stringFilter( char InputStr[], long len, char OutputStr[]){
int[] a= new int[26];
int num=0;
int j=0;//OutputStr[]計數
for(int i=0;i<len;i++){
num = InputStr[i]-'a';
if(a[num]==0){//沒湧現過
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;
}
}
}