เราได้รับหลายประโยคในรูปแบบของสตริง เป้าหมายคือการนับจำนวนคำที่มีอยู่ในทุกประโยค
หมายเหตุ − คำที่มีอักษรตัวพิมพ์เล็กทั้งหมดจะพิจารณาเท่านั้น
ถ้าประโยคคือ −
“ ฉันกำลังเรียนภาษาซี ”
“ การเรียนรู้สิ่งใหม่ๆ เป็นเรื่องง่าย “
“ เด็ก ๆ กำลังเรียนรู้นิสัยที่ดีต่อสุขภาพ “
มีเพียง "การเรียนรู้" เท่านั้นที่มีอยู่ในทั้งสาม นับเป็น 1
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − “เสื้อผ้าแห้ง”, “เด็กๆ เล่นกันหมด”, “นั่นเป็นวันที่ดีที่สุด”
ผลผลิต − จำนวนคำที่มีอยู่ในประโยคที่กำหนดทั้งหมดคือ − 2
คำอธิบาย − คำว่า “the” และ “were” มีอยู่ในทุกประโยค
ป้อนข้อมูล − “เรากำลังจะไปโรงเรียน”, “ถ้าคุณยินดีก็ไปต่อ”, “ขายหมดแล้ว”
ผลผลิต − จำนวนคำที่มีอยู่ในประโยคที่กำหนดทั้งหมดคือ − 1
คำอธิบาย − คำว่า “เป็น” มีอยู่ในทุกประโยค
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
ในแนวทางนี้ ก่อนอื่นเราจะเก็บคำศัพท์ของประโยคแรกไว้ใน vector
เราจะค้นหาคำในชุดเวกเตอร์ในประโยคอื่นๆ ทั้งหมดโดยใช้การตรวจสอบ unordered_map
-
หา vector
vec. และเริ่มต้นด้วยสตริงทั้งหมดที่มีประโยค -
จำนวนประโยคจะเป็น vec.size()
-
ฟังก์ชัน word_sentences(vector
vec, int size) ใช้เวกเตอร์ของประโยคและขนาดและคืนค่าจำนวนคำที่มีอยู่ในประโยคที่กำหนดทั้งหมด -
นับเริ่มต้นเป็น 0
-
ใช้ str สตริงชั่วคราวเพื่อเก็บคำแต่ละคำในประโยค
-
ข้ามประโยคแรกที่เก็บไว้ใน vec[0] โดยใช้ while loop
-
ข้างในโดยใช้ while loop อื่น ให้แยกแต่ละคำใน str[] จนกว่าจะพบช่องว่าง
-
ตอนนี้เรามีคำของประโยคแรกใน str แล้ว ให้เพิ่มคู่ของ (str,true) เข้าไปในเซต
-
ทำสิ่งนี้กับทุกคำในประโยคที่เก็บไว้ใน vec[0].
-
ชุดเวกเตอร์ตอนนี้มีคู่ของคำทั้งหมดในประโยคแรกที่มีค่าจริง
-
เวกเตอร์การเคลื่อนที่ของประโยคจากประโยคที่ 2 ถึงประโยคสุดท้ายโดยใช้ for loop จาก j=1 ถึง j
-
แยกแต่ละคำออกจากประโยคปัจจุบันใน vec[j] และเก็บไว้ใน str.
-
ทำเครื่องหมายคำเหล่านี้ว่าเป็นจริงในการตรวจสอบแผนที่โดยใช้ check[str]=true.
-
ทำสิ่งนี้กับทุกคำในประโยคปัจจุบันใน vec[j].
-
ใช้ for loop, traverse vector set และสำหรับประโยคปัจจุบัน ให้ค้นหาว่าคำเหล่านี้อยู่ในชุดหรือไม่
-
ใช้ for loop กำหนดเวกเตอร์การเคลื่อนที่อีกครั้ง
-
หากคำปัจจุบันปรากฏในประโยคทั้งหมด set[k].second จะเป็นจริง ถ้าใช่ ให้นับเพิ่ม
-
ในตอนท้ายเราจะนับตัวแปรด้วยคำที่เกิดขึ้นในทุกประโยค
-
ผลตอบแทนนับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int words_sentences(vector<string> vec, int size){ int count = 0; int i = 0; string str; unordered_map<string, bool> check; vector<pair<string, bool>> set ; pair<string, bool> str_bool; while (i < vec[0].size()){ str = ""; while (i < vec[0].size() && vec[0][i] != ' '){ str += vec[0][i]; i++; } i++; if (str != ""){ str_bool = make_pair(str, true); set.push_back(str_bool); } } for (int j = 1; j < size; j++){ check.clear(); i = 0; while (i < vec[j].size()){ str = ""; while (i < vec[j].size() && vec[j][i] != ' '){ str += vec[j][i]; i++; } i++; if (str != ""){ check[str] = true; } } for(int k = 0; k < set.size(); k++){ if (set[k].second != false && check[set[k].first] == false){ set[k].second = false; } else if (set[k].second != false && check[set[k].first] == true){ check[set[k].first] = false; } } } for (int k = 0; k < set.size(); k++){ if (set[k].second == true){ count++; } } return count; } int main(){ vector<string> vec; vec.push_back("Honesty is the best policy"); vec.push_back("policy varies from company to company"); vec.push_back("Employee should follow the policy of a company"); int size = vec.size(); cout<<"Count of words that are present in all the given sentences are: "<<words_sentences(vec, size); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of words that are present in all the given sentences are: 1