दो तार str1 और str2 समान हैं यदि हम str1 के दो अक्षरों (विभिन्न स्थितियों में) को स्वैप कर सकते हैं, ताकि यह str2 के बराबर हो। साथ ही, दो तार str1 और str2 समान हैं यदि वे समान हैं।
उदाहरण के लिए, "टार" और "चूहे" समान हैं (0 और 2 की स्थिति में अदला-बदली), और "चूहे" और "कला" समान हैं, लेकिन "तारा" "टार", "चूहे" या "के समान नहीं है। कला"।
साथ में, ये समानता के आधार पर दो जुड़े हुए समूह बनाते हैं:{"tars", "rats", "arts"} और {"star"}। ध्यान दें कि "टार" और "आर्ट्स" एक ही समूह में हैं, भले ही वे एक जैसे न हों।
औपचारिक रूप से, प्रत्येक समूह ऐसा होता है कि एक शब्द समूह में होता है यदि और केवल यदि वह समूह में कम से कम एक अन्य शब्द के समान हो।
स्ट्रिंग्स की एक सूची एआर को देखते हुए जहां एआर में प्रत्येक स्ट्रिंग एआर में हर दूसरे स्ट्रिंग का विपर्यय है। हमें एक फ़ंक्शन लिखना है जो यह पता लगाए कि कितने समूह हैं।
उदाहरण
निम्नलिखित कोड है -
const arr = ["tars","rats","arts","star"];
const isSimilar = (str1, str2) => {
const obj = {}
let counter = 0
for(let i=0; i< str1.length; i++){
if(str1[i] !== str2[i]) { counter++ }
obj[str1[i]] = str2[i]
}
return counter === 2? true : false
}
const similarStringGroup = (arr = []) => {
const group = [[arr[0]]]
for(let i=1; i<arr.length; i++){
let match = false
for(let j=0; j<group.length; j++){
for(let k=0; k< group[j].length; k++){
const booleanMatch = isSimilar(group[j][k], arr[i])
if(booleanMatch) {
group[j].push(arr[i]);
match = true
break;
}
}
if(match === true) { break }
}
if(match === false){ group.push([arr[i]]) }
}
return group.length
}
console.log(similarStringGroup(arr)); आउटपुट
कंसोल आउटपुट निम्नलिखित है -
2