สตริงตัวเลข str เรียกว่าสตริงที่สวยงาม หากแยกออกเป็น arr ลำดับของจำนวนเต็มบวกสองจำนวนขึ้นไป โดยเป็นไปตามเงื่อนไขต่อไปนี้ -
-
arr[i] - arr[i - 1] =1 สำหรับ i ใดๆ ในดัชนีของลำดับ นั่นคือ แต่ละองค์ประกอบในซีเควนซ์มากกว่าองค์ประกอบก่อนหน้า
-
องค์ประกอบของลำดับไม่ควรมีศูนย์นำหน้า ตัวอย่างเช่น เราสามารถแบ่ง '50607' เป็นลำดับ [5, 06, 07] ได้ แต่มันไม่สวยงามเพราะ 06 และ 07 มีเลขศูนย์นำหน้า
-
เนื้อหาของซีเควนซ์ไม่สามารถจัดเรียงใหม่ได้
ตัวอย่างเช่น −
หากสตริงอินพุตเป็น −
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