เราได้รับสตริงสองสตริงคือ str1 และ str2 และภารกิจคือการคำนวณจำนวนสตริงที่สามารถสร้างได้อย่างสมบูรณ์จากสตริงอื่น แต่เราสามารถใช้อักขระตัวเดียวเพื่อสร้างสตริงได้ เช่น เราจะใช้ str1 และ str2 สองสตริง และตรวจสอบการเกิดของ str2 ใน str1 โดยใช้อักขระ str1 เพียงครั้งเดียว
ป้อนข้อมูล − str_1 ="การเรียนรู้ทางเทคนิค", str_2 ="การเรียนรู้"
ผลผลิต − จำนวนสตริงที่สามารถสร้างจากสตริงอื่นโดยใช้อักขระแต่ละตัวได้ไม่เกินหนึ่งครั้งคือ − 1
คำอธิบาย − ดังที่เราเห็น str_2 เกิดขึ้นใน str_1 เพียงครั้งเดียว ดังนั้น จำนวน str_1 ใน str_2 คือ 1
ป้อนข้อมูล − str_1 =“ellohsehelloabcoelhl, str_2 =“สวัสดี”
ผลผลิต − จำนวนสตริงที่สามารถสร้างจากสตริงอื่นโดยใช้อักขระแต่ละตัวได้ไม่เกินหนึ่งครั้งคือ − 3
คำอธิบาย − ดังที่เราเห็น str_2 คือ สวัสดี ดังนั้น เราจะตรวจสอบการก่อตัวของคำ สวัสดี โดยใช้อักขระของ str_1 เพียงครั้งเดียว ดังที่เราเห็น คำว่า สวัสดี ใน str_1 มี 3 รูปแบบ ดังนั้นการนับคือ 3
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนสตริง str_1 และ str_2 แล้วคำนวณความยาวที่สอดคล้องกัน แล้วส่งข้อมูลไปยังฟังก์ชันเพื่อการประมวลผลต่อไป
-
ประกาศการนับตัวแปรชั่วคราวเพื่อเก็บจำนวน str_2 ใน str_1 และเริ่มต้นด้วย INT_MAX INT_MAX ใช้ใน C++ เพื่อระบุค่าสูงสุดที่ตัวแปรสามารถเก็บได้ และค่าของ INT_MAX คือ +2147483647
-
สร้างอาร์เรย์ขนาด 26 เนื่องจากเรามีตัวอักษรภาษาอังกฤษ 26 ตัวและเริ่มต้นด้วย 0
-
เริ่มวนรอบ FOR จาก 0 จนถึงความยาวของสตริง str_1 และตั้งค่า arr[str_1[i] - 'a'] โดย 1
-
เริ่มการวนซ้ำ FOR จาก 0 จนถึงความยาวของสตริง str_2 และตั้งค่า count เป็นค่าต่ำสุดของ count หรือ arr[str_2[i] - 'a'].
-
จำนวนคืน
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int atmost_once(string str_1, int len_str1, string str_2, int len_str2){ int count = INT_MAX; int arr[26] = { 0 }; for (int i = 0; i < len_str1 ; i++){ arr[str_1[i] - 'a'] += 1; } for (int i = 0; i < len_str2; i++){ count = min(count, arr[str_2[i] - 'a']); } return count; } int main(){ string str_1 = "technical learning"; int length_str1 = str_1.length(); string str_2 = "learning"; int length_str2 = str_2.length(); cout<<"Count of strings that can be formed from another string using each character at-most once are: "<<atmost_once(str_1,length_str1, str_2, length_str2); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of strings that can be formed from another string using each character at-most once are: 1