Phrase reversals: Difference between revisions
m (→{{header|Java}}: Typign is hard, OK?) |
m (→{{header|Java}}: Typing is really REALLY ard) |
||
Line 27: | Line 27: | ||
<lang java5>import java.util.Arrays; |
<lang java5>import java.util.Arrays; |
||
public class |
public class PhraseRev{ |
||
private static String reverse(String x){ |
private static String reverse(String x){ |
||
return new StringBuilder(x).reverse().toString(); |
return new StringBuilder(x).reverse().toString(); |
Revision as of 19:07, 13 November 2014
Given a string of space separated words containing the following phrase:
- "rosetta code phrase reversal"
- Reverse the string.
- Reverse each individual word in the string, maintaining original string order.
- Reverse the order of each word of the phrase, maintaining the order of characters in each word.
Show your output here.
D
Partially lazy. <lang d>void main() {
import std.stdio, std.range;
immutable phrase = "rosetta code phrase reversal"; phrase.retro.writeln; // Reversed string. phrase.splitter.map!retro.joiner(" ").writeln; // Words reversed. phrase.split.retro.joiner(" ").writeln; // Word order reversed.
}</lang>
- Output:
lasrever esarhp edoc attesor attesor edoc esarhp lasrever reversal phrase code rosetta
Java
<lang java5>import java.util.Arrays;
public class PhraseRev{ private static String reverse(String x){ return new StringBuilder(x).reverse().toString(); }
private static <T> T[] reverse(T[] x){ T[] rev = Arrays.copyOf(x, x.length); for(int i = x.length - 1; i >= 0; i--){ rev[x.length - 1 - i] = x[i]; } return rev; }
private static String join(String[] arr, String joinStr){ StringBuilder joined = new StringBuilder(); for(int i = 0; i < arr.length; i++){ joined.append(arr[i]); if(i < arr.length - 1) joined.append(joinStr); } return joined.toString(); }
public static void main(String[] args){ String str = "rosetta code phrase reversal";
System.out.println("Straight-up reversed: " + reverse(str)); String[] words = str.split(" "); for(int i = 0; i < words.length; i++){ words[i] = reverse(words[i]); } System.out.println("Reversed words: " + join(words, " ")); System.out.println("Reversed word order: " + join(reverse(str.split(" ")), " ")); } }</lang>
- Output:
Straight-up reversed: lasrever esarhp edoc attesor Reversed words: attesor edoc esarhp lasrever Reversed word order: reversal phrase code rosetta
Python
<lang python>>>> phrase = "rosetta code phrase reversal" >>> phrase[::-1] # Reversed. 'lasrever esarhp edoc attesor' >>> ' '.join(word[::-1] for word in phrase.split()) # Words reversed. 'attesor edoc esarhp lasrever' >>> ' '.join(word for word in phrase.split()[::-1]) # Word order reversed. 'reversal phrase code rosetta' >>> </lang>