คำอธิบายปัญหา
สมมติว่าเรามีตัวเลข 2 ตัวคือ l และ r ต้องการหาจำนวนเต็ม x ที่อยู่ระหว่าง l และ r (รวมทั้งสองข้าง) และทุกหลักใน x ต่างกันทั้งหมด
ตัวอย่าง: l = 211; r = 230 ผลลัพธ์คือ 213
ขั้นตอนการแก้ปัญหา
สำหรับ k := l ถึง r:
h := แปลง k เป็นสตริง
กำหนดเซต s
สำหรับ i := 0 ถึง ความยาว h - 1:
ใส่ h[i] ลงใน s
ถ้าขนาดของ s เท่ากับขนาดของ h:
คืนค่า h
คืนค่า "-1"
ตัวอย่างโค้ด 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;
int r = 230;
cout << solve(l, r) << endl;
}
อินพุต
211, 230
เอาต์พุต
213