मुझे एक फ़ंक्शन बनाना होगा जो एक स्ट्रिंग लेता है, और इसे वापस आना चाहिए true
या false
इस पर आधारित होना चाहिए कि इनपुट में दोहराए गए वर्ण अनुक्रम शामिल हैं या नहीं। दिए गए तार की लंबाई हमेशा से अधिक होती है 1
और वर्ण अनुक्रम में कम से कम एक पुनरावृत्ति होना चाहिए।
"aa" // true(entirely contains two strings "a")
"aaa" //true(entirely contains three string "a")
"abcabcabc" //true(entirely containas three strings "abc")
"aba" //false(At least there should be two same substrings and nothing more)
"ababa" //false("ab" exists twice but "a" is extra so false)
मैंने नीचे फ़ंक्शन बनाया है:
function check(str){
if(!(str.length && str.length - 1)) return false;
let temp = '';
for(let i = 0;i<=str.length/2;i++){
temp += str[i]
//console.log(str.replace(new RegExp(temp,"g"),''))
if(!str.replace(new RegExp(temp,"g"),'')) return true;
}
return false;
}
console.log(check('aa')) //true
console.log(check('aaa')) //true
console.log(check('abcabcabc')) //true
console.log(check('aba')) //false
console.log(check('ababa')) //false
इसकी जाँच करना वास्तविक समस्या का हिस्सा है। मैं इस तरह एक गैर कुशल समाधान बर्दाश्त नहीं कर सकता। सबसे पहले, यह स्ट्रिंग के आधे भाग से गुजर रहा है।
दूसरी समस्या यह है कि यह replace()
प्रत्येक लूप में उपयोग कर रहा है जो इसे धीमा कर देता है। क्या प्रदर्शन के संबंध में बेहतर समाधान है?