Execution killed (memory limits) Hello World!

Ciao a tutti, io ho sottoposto questa soluzione al problema Hello World! (helloworld)

#include
#include

using namespace std;

int main(){

string s;
cin>>s;
int i=0;
uint64_t hello=0;
uint64_t conto=0;

while(i<s.size()-4){
    
    if(s[i]!='h'&&s[i]!='w'){
        i++;
    }
	else if(s[i]=='h'&&s[i+1]=='e'&&s[i+2]=='l'&&s[i+3]=='l'&&s[i+4]=='o'){
	
		hello++;
		i=i+4;
	}
	else if(s[i]=='w'&&s[i+1]=='o'&&s[i+2]=='r'&&s[i+3]=='l'&&s[i+4]=='d'){
	
		conto+=hello;
		i=i+4;
	}
	else{
		i++;
	}
}

cout<<conto;

}

Mi fa 50, con tutti i casi giusti tranne il 4’ dove dice execution killed (could be triggered by violating memory limits).

Cosa posso fare?
Grazie mille a tutti

Devi stare attento a non accedere a posizioni del vettore che non esistono.

Il controllo all’inzio del while è giusto ma dopo aumenti i di 1

Scusami ma non capisco quale sia il problema…

io devo aumentare i per controllare tutta la stringa.

Se entra con un indice giudicato valido lo aumenta in uno degli if e negli altri non lo faccio entrare prima di averlo controllato mettendoci degli else.

In realtà il problema è un altro, pensa cosa succede se la stringa in input è “he” (tale stringa è ammessa dalle assunzioni)