Ваше решение правильное, но с простой ошибкой.
Когда вы объявляете string result;
, тогда эта переменная объявляется с размером 0. Поэтому всякий раз, когда вы пытаетесь поместить символ в какую-то позицию (то есть, результат [0], результат [1], ...), он обнаруживает, что для этой переменной нет выделенной памяти. Таким образом, он выдает ошибку.
Вместо помещения символа в result
, вы можете добавить символ к этой строке.
Таким образом, вы можете написать result = result + s[j];
Привязка кода должна выглядеть следующим образом -
string result = "";
//char result[len];
if (j < 0)
return s;
while(j >= 0) {
if (isVowel(s[j])) {
result = result + s[j];
}
j--;
}
Но добавление символа в строку занимает больше времени выполнения.
Кроме того, вы также можете использовать string.push_back()
для добавления одиночный символ в строку. Это сложность в целом O(n), n = length of the final string
.
string result = "";
//char result[len];
if (j < 0)
return s;
while(j >= 0) {
if (isVowel(s[j])) {
result.push_back(s[j]);
}
j--;
}