Выводи в консоль str[i] и result , будешь наблюдать каждую итерацию и поймёшь. result при каждой итерации занимает крайнее правое положение, как я понял, а str[i] его смещает вправо. Представь, что у тебя есть патроны, каждый из них разного цвета, есть порядок цветов, ты их суешь в магазин, и делаешь это с первого патрона. Вопрос , где у тебя в магазине откажется этот первый патрон, когда ты вставишь все? Конечно же в конце