Write your code in the file StringRec.java. For this problem, the following rest
ID: 3580952 • Letter: W
Question
Write your code in the file StringRec.java. For this problem, the following restrictions apply:
YOUR CODE MUST BE RECURSIVE.
Do not use loops (while, do/while, or for).
Do not declare any variables outside of a method. You may declare local variables inside a method.
Complete the following method:
public static String decompress(String compressedText): Decompress the input text, which has been compressed using the RLE algorithm (previous hw assignment):
Run-length encoding (RLE) is a simple "compression algorithm" (an algorithm which takes a block of data and reduces its size, producing a block that contains the same information in less space). It works by replacing repetitive sequences of identical data items with short "tokens" that represent entire sequences. Applying RLE to a string involves finding sequences in the string where the same character repeats. Each such sequence should be replaced by a "token" consisting of:
the number of characters in the sequence
the repeating character
If a character does not repeat, it should be left alone.
For example, consider the following string:
After applying the RLE algorithm, this string is converted into:
In the compressed string, "9w" represents a sequence of 9 consecutive lowercase "w" characters. "5e" represents 5 consecutive lowercase "e" characters, etc.
You may assume that the character counts will be single-digit numbers (a character will not repeat more than 9 times consecutively).
Hint #1: remember that characters are represented by numeric codes. You can decrement a character variable as follows:
Hint #2: You probably will not need to use this hint for this problem. However, a fast way to convert a digit character into the numeric value of the digit is to subtract the character code for the digit zero:
Explanation / Answer
so we have use recursive methods for the compress the string variable and prints out as required
program
public class StringRec {
public static String decompress(String compressedText) {
StringBuffer d = new StringBuffer();
int i=0;
if( i < compressedText.length())
{
int runLength = 1;
int j=i+1;
if(j < compressedText.length() && compressedText.charAt(i) == compressedText.charAt(i+1)){
runLength++;
i++;
}
d.append(runLength);
d.append(compressedText.charAt(i));
i++;
}
return d.toString();
}
public static void main(String[] args) {
String example = "SS";
System.out.println(decompress(example));
}
}
output
D:>javac StringRec.java
D:>java StringRec
2S
D:>
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.