Проблема не в if
.Вот эта часть:
for (int i = sentence.length(); i >= 0; i--) {
reverse += sentence[i];
}
i = sentence.length()
неверно, вы должны начать с i = sentence.length()-1
.В противном случае он добавляет символ пробела в строку, что приводит к неверному результату.Этот цикл должен быть:
for (int i = sentence.length()-1; i >= 0; i--) {
reverse += sentence[i];
}
Обратите внимание, что согласно документации :
Возвращает ссылку на символ в указанном месте поз.Проверка границ не выполняется.Если pos> size (), поведение не определено.
Таким образом, добавленный пробел не гарантирован, все может произойти.Для более безопасной версии проверьте функцию at , эта функция сгенерирует исключение, если позиция недействительна, а не тихо вызывает неопределенное поведение.