public static String pancakeScramble(String text) This nifty little problem is taken from the excellent Wolfram Challenges problem site where you can also see examples of what the result should be for various arguments. Given a text string, construct a new string by reversing its first two characters, then reversing the first three characters of that, and so on, until the last round where you reverse your entire current string. This problem is an exercise in Java string manipulation. For some mysterious reason, the Java String type does not come with a reverse method. The canonical way to reverse a Java string str is to first convert it to mutable StringBuilder, reverse its contents, and convert the result back to an immutable string, that is, str = new StringBuilder(str).reverse().toString(); Here's the tester it must pass: @Test public void testPancakeScramble() throws IOException { // Explicit test cases assertEquals("", P2J3.pancakeScramble("")); assertEquals("alu", P2J3.pancakeScramble("lua")); assertEquals("heya", P2J3.pancakeScramble("yeah")); assertEquals("eoeawsm", P2J3.pancakeScramble("awesome")); assertEquals("enisrtpocmue cec", P2J3.pancakeScramble("computer science")); // Testing with War and Peace CRC32 check = new CRC32(); BufferedReader fr = new BufferedReader( new InputStreamReader(new FileInputStream("warandpeace.txt"), "UTF-8") ); String line = fr.readLine(); while(line != null) { String result = P2J3.pancakeScramble(line); check.update(result.getBytes()); line = fr.readLine(); } fr.close(); assertEquals(1606800991L, check.getValue()); }
public static String pancakeScramble(String text)
This nifty little problem is taken from the excellent Wolfram Challenges problem site where you can
also see examples of what the result should be for various arguments. Given a text string,
construct a new string by reversing its first two characters, then reversing the first three characters
of that, and so on, until the last round where you reverse your entire current string.
This problem is an exercise in Java string manipulation. For some mysterious reason, the Java
String type does not come with a reverse method. The canonical way to reverse a Java string
str is to first convert it to mutable StringBuilder, reverse its contents, and convert the result
back to an immutable string, that is,
str = new StringBuilder(str).reverse().toString();
Here's the tester it must pass:
@Test public void testPancakeScramble() throws IOException {
// Explicit test cases
assertEquals("", P2J3.pancakeScramble(""));
assertEquals("alu", P2J3.pancakeScramble("lua"));
assertEquals("heya", P2J3.pancakeScramble("yeah"));
assertEquals("eoeawsm", P2J3.pancakeScramble("awesome"));
assertEquals("enisrtpocmue cec", P2J3.pancakeScramble("computer science"));
// Testing with War and Peace
CRC32 check = new CRC32();
BufferedReader fr = new BufferedReader(
new InputStreamReader(new FileInputStream("warandpeace.txt"), "UTF-8")
);
String line = fr.readLine();
while(line != null) {
String result = P2J3.pancakeScramble(line);
check.update(result.getBytes());
line = fr.readLine();
}
fr.close();
assertEquals(1606800991L, check.getValue());
}
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 2 images