I need to reverse only letters in String and keep symbols and numbers in the same place using Character.isLetter
and also I need to keep the same order of the reversed words.
My code reverses a string and keeps symbols and numbers in place but changes the order of the words, for example:
My input string:
a1bcd efg!h
My output string:
h1gfe dcb!a
Instead my output supposes to be:
d1cba hgf!e
class AnagramsMaker {
public static String createAnagram(String StringToReverse) {
char[] stringToChar = StringToReverse.toCharArray();
int arrayStart = 0;
int arrayEnd = stringToChar.length - 1;
while (arrayStart < arrayEnd) {
if (Character.isLetter(stringToChar[arrayStart]) && Character.isLetter(stringToChar[arrayEnd])) {
char temp = stringToChar[arrayStart];
stringToChar[arrayStart] = stringToChar[arrayEnd];
stringToChar[arrayEnd] = temp;
arrayStart++;
arrayEnd--;
}
else if (Character.isLetter(stringToChar[arrayStart]) && !Character.isLetter(stringToChar[arrayEnd])) {
arrayEnd--;
}
else if (!Character.isLetter(stringToChar[arrayStart]) && Character.isLetter(stringToChar[arrayEnd])) {
arrayStart++;
}
else {
arrayStart++;
arrayEnd--;
}
}
return String.valueOf(stringToChar);
}
}