Trong bài viết này, ta sẽ giải quyết bài toán xóa một từ cho trước khỏi một chuỗi cho trước. Ví dụ −
Input : str = “remove a given word ”, word = “ remove ” Output : “ a given word ” Input : str = “ god is everywhere ”, word = “ is ” Output : “ god everywhere ”
Phương pháp tìm giải pháp
Ví dụ, ta có thể dùng phương pháp đơn giản để xóa một từ khỏi chuỗi.
- Đầu tiên, đặt chuỗi cho trước vào dạng ma trận 2-D, với mỗi từ lưu ở mỗi hàng.
- Tìm từ trong ma trận và thay hàng đó bằng ký tự null nơi có từ.
- Cuối cùng, in chuỗi đã sắp xếp lại.
Ví dụ
#include <bits/stdc++.h> using namespace std; int remove_word (string str, char word[]) { char matrix[10][30]; int i = 0, j = 0, k = 0, len1 = 0, len2 = 0; // đưa mỗi từ của chuỗi vào hàng của ma trận 2-D. for (i = 0; str[i] != '\0'; i++) { if (str[i] == ' ') { matrix[k][j] = '\0'; k++; j = 0; }else{ matrix[k][j] = str[i]; j++; } } // tìm từ trong chuỗi cho trước và đặt ký tự null khi tìm thấy từ. matrix[k][j] = '\0'; j = 0; for (i = 0; i < k + 1; i++) { if (strcmp (matrix[i], word) == 0) { matrix[i][j] = '\0'; } } j = 0; // in chuỗi đã sắp xếp lại. for (i = 0; i < k + 1; i++){ if (matrix[i][j] == '\0') continue; else cout << matrix[i] << " "; } cout << "\n"; } int main () { char str1[] = "remove a given word", word1[] = "remove"; char str2[] = "god is everywhere", word2[]="is"; // gọi hàm xóa từ cho trước khỏi chuỗi và in nó. remove_word (str1, word1); remove_word (str2, word2); return 0; }Kết quả
a given word god everywhere
Giải thích mã trên
- Khởi tạo chuỗi và mảng với một số giá trị và gọi hàm xóa từ cho trước.
- Đưa mỗi từ của chuỗi vào mỗi hàng của ma trận 2-D dùng vòng lặp lưu từng ký tự vào từng ô cho đến khi gặp khoảng trắng.
- So sánh chuỗi với từ dùng hàm strcmp() và đặt giá trị null trong hàng tìm thấy từ.
- Cuối cùng, in chuỗi bằng cách in mỗi hàng của ma trận.
Kết luận
Bài viết này thảo luận xóa một từ cho trước khỏi Chuỗi nơi ta giải quyết bài toán bằng cách lưu chuỗi trong ma trận 2-D và thay thế từ bằng giá trị null. Ta giải quyết bài toán này dùng mã C++. Tuy nhiên, ta có thể giải quyết cùng bài toán dùng bất kỳ ngôn ngữ nào khác như C, Java, Python, v.v. Hy vọng bạn thấy bài viết hữu ích.