একটি সংখ্যাগত স্ট্রিং (str) কে সুন্দর স্ট্রিং (beautiful string) বলা হয় যদি সেটিকে দুটি বা অধিক ধনাত্মক পূর্ণসংখ্যার সিকোয়েন্স (arr) এ ভাগ করা যায়, যেটি নিচের শর্তাবলী পূরণ করে —
- arr[i] - arr[i - 1] = 1, সিকোয়েন্সের যেকোনো i ইনডেক্সের জন্য, অর্থাৎ প্রতিটি উপাদান পূর্ববর্তী উপাদানের চেয়ে ১ বড়।
- সিকোয়েন্সের কোনো উপাদান লিডিং জিরো (leading zero) ধারণ করবে না। উদাহরণস্বরূপ, '50607' কে [5, 06, 07] এ ভাগ করা যায়, কিন্তু এটি সুন্দর নয় কারণ 06 এবং 07-তে লিডিং জিরো আছে।
- সিকোয়েন্সের কন্টেন্ট রি-অ্যারেঞ্জ (rearrange) করা যাবে না।
উদাহরণস্বরূপ —
ইনপুট স্ট্রিং যদি হয় —
const str = '91011';
তাহলে আউটপুট হবে —
const output = true;
কারণ চাওয়া সিকোয়েন্স হলো [9, 10, 11]
উদাহরণ
কোডটি নিচে দেওয়া হলো —
const str = '91011';
const isBeautiful = (str) => {
let i = 1;
let count=0;
const { length } = str;
while(i <= length / 2){
let check = true;
let j = i;
let left = BigInt(str.substring(0,j));
let nextRange = (left + 1n).toString().length;
while(j + nextRange <= length){
let right=BigInt(str.substring(j,j+nextRange));
if(left === right-1n){
left=right;
j+=nextRange;
nextRange=(left+1n).toString().length;
count=j;
}else{
check=false;
break;
}
};
if(check === true && count === length){
return true;
}
i++;
};
return false;
};
console.log(isBeautiful(str));
আউটপুট
কনসোল আউটপুট:
true