Есть как минимум две фундаментальные проблемы с вашим решением:
- Вы получаете s1 до тех пор, пока он не опустеет, а затем выполняете проверку палиндрома
- s1 и reverser не совпадают с типом данных
1) Пока игнорируется пункт 2, похоже, что s1 пуст, когда вы используете его, чтобы определить, является ли ввод палиндромом. Вам необходимо убедиться, что при проверке эквивалентности обе переменные указывают на структуры с данными в них!
2) s1 - это стек, а реверс - это строка []. Реализация по умолчанию 'equals' в стеке - это проверка того, является ли аргумент экземпляром стека. Поскольку этого никогда не произойдет, вы всегда увидите «Входная строка не является палиндромом».
Чтобы исправить 2), вам нужно сделать оба объекта одного типа данных (либо Stack, либо String []). Если вы выберете последнюю строку [], вам нужно будет проверить, что строки в каждом индексе i эквивалентны как в s1, так и в реверсоре.
Надеюсь, это поможет!