สมมติว่าเรามีสตริง S ที่มีอักษรตัวพิมพ์เล็ก n ตัว สตริงจะเรียกว่าหลากหลายถ้ามีตัวอักษรต่อเนื่องกันของตัวอักษรภาษาอังกฤษและแต่ละตัวอักษรเกิดขึ้นเพียงครั้งเดียว (ตัวอักษร 'a' และ 'z' ไม่อยู่ติดกัน) ก็ต้องดูกันอีกทีว่ามีความหลากหลายหรือไม่
ดังนั้น หากอินพุตเป็น S ="fced" เอาต์พุตจะเป็น True
ขั้นตอน
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
sort the array S flag := 1 for initialize i := 1, when i < size of S and flag is non-zero, update (increase i by 1), do: if S[i] - S[i - 1] is not equal to 1, then: flag := 0 return (if flag is non-zero, then true, otherwise 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