ในบทความนี้ เราจะแก้ปัญหาการลบคำที่กำหนดออกจากสตริงที่กำหนด เช่น:
Input : str = "remove a given word", word = "remove" Output : "a given word" Input : str = "god is everywhere", word = "is" Output : "god everywhere"
แนวทางแก้ปัญหา
ตัวอย่างเช่น เราสามารถใช้วิธีง่ายๆ ในการลบคำจากสตริง:
- ขั้นแรก ใส่สตริงที่กำหนดในรูปแบบ 2-D matrix โดยแต่ละคำเก็บในแต่ละแถว
- หาคำในเมทริกซ์และแทนที่แถวนั้นด้วย null character ที่คำนั้นอยู่
- สุดท้าย พิมพ์สตริงที่เรียงใหม่
ตัวอย่างโค้ด
#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;
// ใส่แต่ละคำของสตริงลงในแถวของ 2-D matrix
for (i = 0; str[i] != '\0'; i++) {
if (str[i] == ' ') {
matrix[k][j] = '\0';
k++;
j = 0;
} else {
matrix[k][j] = str[i];
j++;
}
}
// หาคำในสตริงและใส่ null character เมื่อเจอคำนั้น
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;
// พิมพ์สตริงที่เรียงใหม่
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";
// เรียกฟังก์ชันลบคำจากสตริงและพิมพ์
remove_word(str1, word1);
remove_word(str2, word2);
return 0;
}
ผลลัพธ์
a given word god everywhere
คำอธิบายโค้ด
- กำหนดค่า string และ array แล้วเรียกฟังก์ชันลบคำที่กำหนด
- ใส่แต่ละคำของสตริงในแต่ละแถวของ 2-D matrix โดยลูปเก็บตัวอักษรจนกว่าจะเจอ space
- เปรียบเทียบสตริงกับคำโดยใช้ strcmp() และใส่ค่า null ในแถวที่เจอคำ
- สุดท้าย พิมพ์สตริงโดยพิมพ์แต่ละแถวของ matrix
สรุป
บทความนี้อภิบายการลบคำที่กำหนดจาก String โดยเก็บสตริงใน 2-D matrix แล้วแทนที่คำด้วยค่า null เราแก้ปัญหานี้ด้วย C++ อย่างไรก็ตาม สามารถแก้ปัญหาเดียวกันได้ด้วยภาษาอื่นเช่น C, Java, Python หวังว่าจะเป็นประโยชน์