Write your code in the file Compress.java. Your code should go into a method wit
ID: 3759779 • Letter: W
Question
Write your code in the file Compress.java. Your code should go into a method with the following signature. You may write your own main method to test your code. The graders will ignore your main method:
public static String compress (String original){}
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.
Write a method called compress that takes a string as input, compresses it using RLE, and returns the compressed string. Case matters - uppercase and lowercase characters should be considered distinct. You may assume that there are no digit characters in the input string. There are no other restrictions on the input - it may contain spaces or punctuation. There is no need to treat non-letter characters any differently from letters.
Explanation / Answer
Answer:
Compress.java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.*;
public class {
public static String compress (String original) {
StringBuffer dest = new StringBuffer();
for (int i = 0; i < original.length(); i++) {
int runLength = 1;
while (i+1 < original.length() && original.charAt(i) == original.charAt(i+1)) {
runLength++;
i++;
}
dest.append(runLength);
dest.append(original.charAt(i));
}
return dest.toString();
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.print("Enter string: ");
String str = sc.nextLine();
System.out.println(compress(str));
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.