Мне нужно циклически сдвигать символы, после ряда таких сдвигов должна получится реверснутая строка. Например: caba -> acba->abca->abac Нужно подсчитать кол-во таких сдвигов, но что-то не так :
public static void main(String args[]) {
int N = scanner.nextInt();
String s = scanner.next();
StringBuffer reverse = new StringBuffer(s);
StringBuffer sb = new StringBuffer(s);
reverse = reverse.reverse();
System.out.print(reverse);
System.out.println(sb);
int cnt = 0;
while (!(sb.equals(reverse))) {
for (int i = 0; i < N - 1; i++) {
char t = sb.charAt(0);
System.out.println(i);
sb = sb.deleteCharAt(i);
sb = sb.insert(i + 1, t);
cnt++;
System.out.println(sb);
}
}
System.out.println(cnt);
}
Я исправила ошибки в программе. И получился такой вариант:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите исходную строку: ");
String s = scanner.next();
StringBuilder reverse = new StringBuilder(s);
StringBuilder sb = new StringBuilder(s);
reverse.reverse();
System.out.println("Исходная строка: " + sb);
System.out.println("Целевая строка: " + reverse);
int cnt = 0;
String revStr = reverse.toString();
while (!(sb.toString().equals(revStr))) {
for (int i = 0; i < sb.length() - 1; i++) {
char t = sb.charAt(i);
sb.deleteCharAt(i);
sb.insert(i + 1, t);
cnt++;
System.out.println("Промежуточный результат: " + sb);
}
}
System.out.println("Количество сдвигов: " + cnt);
}
Результат работы:
Введите исходную строку: caba
Исходная строка: caba
Целевая строка: abac
Промежуточный результат: acba
Промежуточный результат: abca
Промежуточный результат: abac
Количество сдвигов: 3
Но нужно понимать, что подобным образом невозможно реверсировать строку. В вашем примере это получается только потому, что 1й и 3й символы совпадают. Если ввести строку с разными символами, то условие цикла while никогда не выполнится и программа зациклится.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть таймер и в таймере перезагрузка страницы и со временем она перестает перезагружатьсяПочему?
Кто может подсказать, как можно реализовать? У меня есть поля:
Есть java программа и таблица"students в базе данных: