อภิปรายวิธีการลบฟังก์ชันที่จะลบอักขระที่ запрещен (forbidden characters) เช่น [ ':', '?', '\', '/', '<', '>', '|', '*' ] จากสตริง ตัวอย่างเช่น:
Input: str = "Hello: Welco*me/ to Tu>torials point|." Output: "Hello Welcome to Tutorials point." คำอธิบาย: สตริงอินพุตมีอักขระที่ запрещен ซึ่งถูกลบออก และสตริงใหม่ไม่มีอักขระที่ запрещен Input: str = "How/ are y*ou doi,ng?" Output: "How are you doing"
วิธีการหาคำตอบ
วิธีง่ายๆ ที่สามารถนำมาใช้กับปัญหานี้ได้คือ:
- เดินทางผ่านสตริงจากด้านใดด้านหนึ่ง
- ตรวจสอบแต่ละอักขระว่ามันเป็นอักขระที่ запрещен หรือไม่
- ลบอักขระถ้ามันเป็นอักขระที่ запрещен
- เราสามารถแทรกค่า null หรือสตริงใหม่เพื่อแทรกอักขระทั้งหมดยกเว้นอักขระที่ запрещен ในการลบอักขระ
ตัวอย่าง
โค้ด C++ สำหรับวิธีข้างต้น
#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
// ฟังก์ชันลบอักขระที่ запрещен
void removeforbidden(char* str){
int j = 0;
int n = strlen(str);
// เดินทางผ่านสตริงและค้นหาอักขระที่ запрещен
for(int i = 0; i < n; i++){
switch(str[i]){
case '/':
case '\\':
case ':':
case '?':
case '"':
case '<':
case '>':
case '|':
case '*':
// แทรกค่า null แทนอักขระที่ запрещен
str[j] = '\0';
break;
default:
str[j++] = str[i];
}
}
// พิมพ์สตริง
for(int i = 0; i < n; i++)
cout << str[i];
return;
}
int main(){
char str[] = "Hello: Welco*me/ to Tu>torial?s point|.";
removeforbidden(str);
return 0;
}
ผลลัพธ์
Hello, Welcome to Tutorials point.
คำอธิบายโค้ด
- ใช้ Switch case ขณะเดินทางผ่านสตริง ซึ่งแต่ละองค์ประกอบของสตริงจะถูกตรวจสอบกับ case characters
- ถ้าอักขระเท่ากับ case character แล้ว จะถูกแทนที่ด้วย null character
สรุป
ในบทช่วยสอนนี้ เราสร้างฟังก์ชันสำหรับลบอักขระที่ запрещен เช่น [ ':', '?', '\', '/', '<', '>', '|', '*' ] เราอภิปรายวิธีง่ายๆ ในการแก้ปัญหานี้โดยการเดินทางผ่านสตริงและจับคู่อักขระกับอักขระที่ запрещен
เรายังอภิปรายโปรแกรม C++ สำหรับปัญหานี้ซึ่งเราสามารถทำได้กับภาษาโปรแกรมมิ่งอย่าง C, Java, Python ฯลฯ เราหวังว่าบทช่วยสอนนี้จะเป็นประโยชน์