Cho hai số l và r. Tìm số nguyên x trong đoạn [l, r] sao cho tất cả chữ số của x đều khác nhau. Nếu không có, trả về -1.
Ví dụ
Với l = 211; r = 230, đầu ra 213.
Giải thuật
Duyệt k từ l đến r. Chuyển k thành chuỗi, dùng set kiểm tra các ký tự có trùng lặp không. Nếu kích thước set bằng độ dài chuỗi, trả về chuỗi đó. Hết vòng lặp trả về "-1".
Mã C++
#include <bits/stdc++.h>
using namespace std;
string solve(int l, int r) {
for (int k = l; k <= r; k++) {
string h = to_string(k);
set<char> s;
for (int i = 0; i < h.size(); i++)
s.insert(h[i]);
if (s.size() == h.size())
return h;
}
return "-1";
}
int main() {
int l = 211, r = 230;
cout << solve(l, r) << endl;
}
Đầu vào / Đầu ra
Input: 211, 230
Output: 213