هناك عدة طرق للقيام بذلك، من أفضل الطرق هو القيام بالتالي:
بدل التعديل على نفس السلسلة يمكننا إنشاء سلسلة أخرى و تخزين الجواب فيها.
أي أننا نقوم بالمرور على كافة عناصر السلسلة المطلوب الحذف منها، و في حال وجدنا حرف لا نريد حذفه نقوم بإضافته إلى السلسلة الأخرى، و بالتالي في النهاية يصبح لدينا السلسلة المطلوبة.
كمثال على ذلك بفرض أنه لدينا سلسلة و نريد إزالة الأحرف الصوتية منها، يمكننا القيام بذلك كما يلي:
string s = "The bird is on the tree";
string t = "";
for (int i = 0 ; i < s.size() ; ++i){
if(s[i] != 'a' && s[i] != 'e' && s[i] != 'i' && s[i] != 'o' && s[i] != 'u')
t += s[i];
}
cout << t << '\n';
لماذا لا نقوم كل مرة بالحذف من السلسلة مباشرة؟
السبب وراء ذلك أن عملية الحذف مكلفة حسابياً، حيث أنه في كل مرة نقوم بالحذف فيها سنقوم بعملية إزاحة لكافة المحارف التي تلي المحرف المحذوف، و هذا مكلف في حال كانت السلسلة طويلة جداً.