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

จำนวนสตริงที่สามารถสร้างจากสตริงอื่นโดยใช้อักขระแต่ละตัวได้มากที่สุดหนึ่งครั้งใน C++


เราได้รับสตริงสองสตริงคือ 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