The problem
You need to create secret messages which have to be deciphered.
Listed below are the circumstances:
- Your message is a string containing area separated phrases.
- It’s good to encrypt every phrase within the message utilizing the next guidelines:
- The primary letter have to be transformed to its ASCII code.
- The second letter have to be switched with the final letter
- Keepin’ it easy: There aren’t any particular characters within the enter.
Examples:
EncryptWords.encryptThis("Hiya") => "72olle"
EncryptWords.encryptThis("good") => "103doo"
EncryptWords.encryptThis("hi there world") => "104olle 119drlo"
The answer in Java code
Possibility 1:
import java.util.Arrays;
import java.util.Iterator;
public class EncryptWords {
public static String encryptThis(String textual content) {
if (textual content.size()==0) return "";
String[] phrases = textual content.break up(" ");
StringBuilder sb = new StringBuilder();
for (Iterator<String> it = Arrays.stream(phrases).iterator(); it.hasNext(); ) {
String phrase = it.subsequent();
StringBuilder nw = new StringBuilder();
//first char
nw.append((int)phrase.charAt(0));
if (phrase.size()>1) {
//final char
nw.append(phrase.charAt(phrase.size() - 1));
//remainder of phrase
if (phrase.size()>=3) nw.append(phrase.substring(2, phrase.size() - 1));
//second char
if (phrase.size()>2) nw.append(phrase.charAt(1));
}
//add to essential phrase
sb.append(nw).append(" ");
}
return sb.toString().trim();
}
}
Possibility 2:
import java.util.Arrays;
import java.util.stream.Collectors;
public class EncryptWords {
public static String encryptThis(String textual content) {
return Arrays.stream(textual content.break up(" "))
.map(w->w.size()>2?(int)w.charAt(0)+w.substring(w.size()-1)+w.substring(2, w.size()-1)+w.substring(1,2):
w.size()>1?(int)w.charAt(0)+w.substring(1):
w.size()==1?(int)w.charAt(0)+"":"")
.accumulate(Collectors.becoming a member of(" "));
}
}
Possibility 3:
import java.util.Arrays;
import java.util.stream.Collectors;
public class EncryptWords {
public static String encryptThis(String textual content) {
return textual content.size() == 0 ? textual content : Arrays.stream(textual content.break up(" "))
.map(s -> "" + (int) s.charAt(0)
+ (s.size() > 2 ? s.charAt(s.size() - 1)
+ s.substring(2, s.size() - 1)
+ s.charAt(1) : s.substring(1)))
.accumulate(Collectors.becoming a member of(" "));
}
}
Take a look at circumstances to validate our resolution
import org.junit.jupiter.api.Take a look at;
import static org.junit.jupiter.api.Assertions.*;
public class EncryptWordsTest {
@Take a look at
public void exampleTests() {
assertEquals("", EncryptWords.encryptThis(""));
assertEquals("65 119esi 111dl 111lw 108dvei 105n 97n 111ka", EncryptWords.encryptThis("A clever outdated owl lived in an oak"));
assertEquals("84eh 109ero 104e 115wa 116eh 108sse 104e 115eokp", EncryptWords.encryptThis("The extra he noticed the much less he spoke"));
assertEquals("84eh 108sse 104e 115eokp 116eh 109ero 104e 104dare", EncryptWords.encryptThis("The much less he spoke the extra he heard"));
assertEquals("87yh 99na 119e 110to 97ll 98e 108eki 116tah 119esi 111dl 98dri", EncryptWords.encryptThis("Why can we not all be like that clever outdated fowl"));
assertEquals("84kanh 121uo 80roti 102ro 97ll 121ruo 104ple", EncryptWords.encryptThis("Thanks Piotr for all of your assist"));
}
}