Задание:
Сдвиг во введенной строке четных символов на 2 позиции вправо. Сдвиг полагать кольцевым.
public static String moveLetters(String a) {
char[] chars = a.toCharArray();
char lastChar = ' ';
if (chars.length % 2 == 0) {
lastChar = chars[chars.length - 1];
} else if ((chars.length - 1) % 2 == 0) {
lastChar = chars[chars.length - 2];
}
char tmp = chars[1];
chars[1] = lastChar;
if (chars[chars.length-1]%2==0)
chars[chars.length-1] = tmp;
if (chars[chars.length - 1] % 2 != 0) {
for (int i = 2; i < chars.length; i++) {
for (int j = 0; j < chars.length; j++) {
if (((i + 1) % 2 == 0) & (tmp != ' ')) {
char tmp2 = chars[i];
chars[i] = tmp;
tmp = tmp2;
}
}
}
}
return new String(chars);
}
public static String moveLetters(String s) {
int L = s.length();
char[] chars = new char[L];
int i = 0;
for (int x = 0; x < L; x++) {
if (x % 2 == 0) {
i = x;
} else {
if (x == 1) {
i = L - L % 2 - 1;
} else {
i = x - 2;
}
}
chars[x] = s.toCharArray()[i];
}
return new String(chars);
}
public static String moveLetters(String str) {
int L = str.length();
char[] chars = new char[L];
for (int x = 0; x < L; x++) {
chars[x] = str.toCharArray()[(x % 2 == 0) ? (x) : (x == 1) ? (L - L % 2 - 1) : (x - 2)];
}
return new String(chars);
}