n.arrow001
BAN USERpublic static char[] encode(char[] arr){
int dupLocalCount=0,arrayLength=0;
for(int i=1;i<arr.length;i++){
if(arr[i]==arr[i-1]){
dupLocalCount++;
if(i==arr.length-1){
arrayLength+=digitlength(dupLocalCount)+2;
dupLocalCount=0;
}
}else{
if(dupLocalCount>0){
arrayLength+=digitlength(dupLocalCount)+2;
dupLocalCount=0;
}else{
arrayLength+=1;
}
}
}
char[] encodedArray=new char[arrayLength];
int k=0;
for(int i=1;i<arr.length;i++){
if(arr[i]==arr[i-1]){
dupLocalCount++;
if(i==arr.length-1){
char[] temp=digitToChar(dupLocalCount);
for(int j=0;j<temp.length;j++){
encodedArray[k++]=temp[j];
}
encodedArray[k++]='x';
encodedArray[k++]=arr[i-1];
}
}else{
if(dupLocalCount>0){
char[] temp=digitToChar(dupLocalCount);
for(int j=0;j<temp.length;j++){
encodedArray[k++]=temp[j];
}
encodedArray[k++]='x';
encodedArray[k++]=arr[i-1];
dupLocalCount=0;
}else{
encodedArray[k++]=arr[i-1];
}
}
}
return encodedArray;
}
public static int digitlength(int count){
int digitlen=0;
while(count>0){
count/=10;
digitlen++;
}
return digitlen;
}
public static char[] digitToChar(int count){
char[] digitInChar = new char[digitlength(count)];
int i=0;
while(count>0){
digitInChar[i]=(char)('0'+count%10);
count/=10;
i++;
}
return digitInChar;
}
- n.arrow001 June 09, 2016