Giả sử chúng ta có một chuỗi chữ thường S với n ký tự. Chúng ta phải tìm hai chuỗi con không rỗng P và Q, sao cho -
-
Cả P và Q đều là dãy con của S
-
Đối với mỗi chỉ số i, S [i] thuộc đúng một trong P và Q.
-
P là từ vựng tối thiểu nhất có thể.
Vì vậy, nếu đầu vào giống như S ="thelightsaber", thì đầu ra sẽ là 10, vì chúng ta cần 2 sổ tay đỏ, 3 sổ ghi chép màu xanh lá cây và 5 sổ tay màu xanh lam.
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
c := S sort the array c a := position of (c[0]) in S delete c from S print c[0] and S
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#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); }
Đầu vào
"thelightsaber"
Đầu ra
a, thelightsber