Я решаю вопрос, который гласит: менять каждое '?' с 'a' в строке, если не содержит, если не будет образовывать последовательные 'a', иначе заменить на 'b', например. a? b будет abb, а не aab, потому что здесь 2 a являются последовательными .
Моя проблема заключается в том, что для i = 3 моя строка должна быть перезаписана с помощью 'b', в соответствии с моим кодом, который она вводит в нужный блок, но строка не записывается с помощью b, но во всех других случаях там, где должно быть написано «а», написано. Помогите мне с этим.
Здесь вы можете обратиться к формулировке проблемы, чтобы лучше понять мою проблему: https://www.hackerearth.com/practice/algorithms/greedy/basics-of-greedy-algorithms/practice-problems/algorithm/exploring-ruins/
#include <iostream>
using namespace std;
int main() {
string str;
cin >> str;
int n = str.size();
for(int i = 0; i < str.size(); i++) {
if(str[i] == '?') {
if(i == 0) {
if(str[i + 1] == 'a')
str[i] = 'b';
else
str[i] = 'a';
cout << "I am in if" << endl;
} else if(i == n - 1) {
if(str[i - 1] == 'a')
str[i] == 'b';
else
str[i] == 'a';
cout << "I am in if of else if " << endl;
} else {
if(str[i + 1] == 'a' || str[i - 1] == 'a') {
str[i] == 'b';
cout << "I am in if of else " << endl;
} else {
str[i] = 'a';
cout << "I am in else of else " << endl;
}
}
cout << str[i] << endl;
} else
continue;
}
cout << str << endl;
return 0;
}
Заданная строка:? Ba ?? b
желаемый результат: ababab
мой вывод: aba? ab