Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ลบคำที่กำหนดจากสตริงใน C++

ในบทความนี้ เราจะแก้ปัญหาการลบคำที่กำหนดออกจากสตริงที่กำหนด เช่น:

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 หวังว่าจะเป็นประโยชน์