สมมติว่าเรามีสตริง S ตัวพิมพ์เล็ก n ตัวอักษร สตริงเรียกว่า diverse ถ้ามีตัวอักษรอังกฤษติดกัน และแต่ละตัวอักษรปรากฏครั้งละ 1 ครั้ง (a และ z ไม่ถือติดกัน) ตรวจสอบว่ามัน diverse หรือไม่
เช่น ถ้าอินพุตคือ S = "fced" เอาต์พุตจะเป็น True
ขั้นตอนการแก้ปัญหา
เรียงลำดับ S
flag := 1
for i := 1 ถึง size of S - 1 และ flag:
if S[i] - S[i-1] != 1:
flag := 0
return (ถ้า flag แล้ว true มิฉะนั้น false)
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
bool solve(string S) {
sort(S.begin(), S.end());
int flag = 1;
for (int i = 1; i < S.size() && flag; i++)
if (S[i] - S[i - 1] != 1)
flag = 0;
return flag ? true : false;
}
int main() {
string S = "fced";
cout << solve(S) << endl;
}
อินพุต
"fced"
เอาต์พุต
1