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

โค้ด C++ เพื่อค้นหาสตริงย่อยสองสตริงที่มีสตริงย่อยน้อยที่สุด


สมมติว่าเรามีสตริงตัวพิมพ์เล็ก S ที่มีอักขระ n ตัว เราต้องหาสองสตริงย่อยที่ไม่ว่างเปล่า P และ Q เช่นนั้น -

  • ทั้ง P และ Q เป็นผลสืบเนื่องของ S

  • สำหรับแต่ละดัชนี i S[i] เป็นของหนึ่งใน P และ Q

  • P มีค่าน้อยที่สุดเท่าที่จะเป็นไปได้

ดังนั้น หากอินพุตเป็นเหมือน S ="thelightsaber" ผลลัพธ์จะเป็น 10 เพราะเราต้องการสมุดโน้ตสีแดง 2 เล่ม โน้ตบุ๊กสีเขียว 3 เล่ม และโน้ตบุ๊กสีน้ำเงิน 5 เล่ม

ขั้นตอน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

c := S
sort the array c
a := position of (c[0]) in S
delete c from S
print c[0] and S

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <bits/stdc++.h>
using namespace std;
void solve(string S){
   string c = S;
   sort(c.begin(), c.end());
   int a = S.find(c[0]);
   S.erase(S.begin() + a);
   cout << c[0] << ", " << S << endl;
}
int main(){
   string S = "thelightsaber";
   solve(S);
}

อินพุต

"thelightsaber"

ผลลัพธ์

a, thelightsber