- Waxaa la daabacay
Waayo-aragnimo guud oo laga helay qorista taariikhda TypeScript
- Qorayaasha
- Magaca
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
https://github.com/ImBIOS/common-char-extractor-ts
GitHub Kaydka:Dunida wareegga barnaamijka ee wareegga, caqabadaha algorithmku ma aha oo kaliya tijaabooyin aqoon farsamo, laakiin sidoo kale daaqado lagu eego awoodda xallinta dhibaatada ee musharaxiinta. Mid ka mid ah dhibaatooyinka xiisaha leh, oo badanaa la kulmo, waxay ku wareegsan tahay maareynta xarfaha - xirfad aasaasi ah oo ku jirta arsenalka horumariye. Maanta, waxaan ku dul degnaa dhibaato soo jiidasho leh: ogaanshaha xarfaha caadiga ah ee dhowr xarfo, iyo sida aan uga soo dhowaaday xalka iyadoo la adeegsanayo TypeScript.
Caqabadda La Soo Bandhigay
Hawsha gacanta ku jirta waxay u muuqatay mid toos ah, haddana si xun loogu adkeeyay: iyadoo la siiyay array xarfo, waxaan u baahnayn inaan qorno shaqsi kaas oo soo saara oo soo celiya array xarfo oo ka soo muuqda booska isku midka ah ee dhammaan xarfaha. Tusaale ahaan, iyadoo la siiyay input ["abcd", "bcd", "cde", "cdef"]
, wax soo saarka la filayo waa ["c", "d"]
, taasoo muujinaysa in 'c' iyo 'd' ay yihiin xarfaha caadiga ah ee la wadaago dhammaan xarfaha booska u dhigma.
Samaynta Xalka
Safarkeennu wuxuu bilaabmay xulashada TypeScript ee xalka - go'aan ay keentay nidaamka nooca adag ee TypeScript, oo kordhiya kalsoonida koodka iyo wax soo saarka horumariye. Tallaabada ugu horreysa waxay ku lug lahayd wareegga kasta oo xaraf ah oo ku jira xarafka ugu horreeya, isticmaalidda si loo barbar dhigo xarfaha u dhigma ee xarfaha ku xiga.
/**
* Soo saara oo soo celi array xarfo oo ka soo muuqda booska isku midka ah
* dhammaan xarfaha gudaha array input.
*
* @param {string[]} words - Array xarfo oo la falanqeynayo.
* @returns {string[]} Array xarfo oo ah kuwo caadi ah oo ku yaal dhammaan xarfaha la bixiyay,
* ilaalinta xarigooda muuqaalka ee xarafka ugu horreeya.
*/
export function extractCommonLetters(words: string[]): string[] {
if (words.length === 0) {
return []
}
const copiedWords = [...words]
const result: string[] = []
const referenceWord = copiedWords[0]
// Wareeg kasta oo xaraf ah oo ku jira erayga ugu horreeya
for (let i = 0; i < referenceWord.length; i++) {
const currentChar = referenceWord[i]
let isCharCommonAcrossWords = true
// Hubi haddii xarafka hadda jira uu ku jiro mid kasta oo ka mid ah ereyada kale
for (let j = 1; j < copiedWords.length; j++) {
const word = copiedWords[j]
const charIndex = word.indexOf(currentChar)
// Haddii xarafka la helin, jooji oo u deji calanka been
if (charIndex === -1) {
isCharCommonAcrossWords = false
break
} else {
// Ka saar xarafka la helay ereyga si loo maareeyo dhibcaha
copiedWords[j] = word.slice(0, charIndex) + word.slice(charIndex + 1)
}
}
// Haddii xarafka uu yahay mid caadi ah oo ku yaal dhammaan ereyada, ku dar natiijada
if (isCharCommonAcrossWords) {
result.push(currentChar)
}
}
return result
}
Qaybtani waxay xambaarsan tahay macnaha habka aan u adeegsanay, iyadoo la xoogga saarayo akhriska iyo lojik toos ah si loo xalliyo dhibaatada.
Ku dul degista ka baxsan: Tijaabinta Xalka
Si aan u xaqiijino xalka, waxaan u adeegsanay suite of test cases oo daboolaya xaalado kala duwan - laga bilaabo kiisaska aasaasiga ah ilaa kuwa aad u adag oo ay ku jiraan xarfo gaar ah iyo dareenka kiiska. Tijaabadaa dhammaystiran waxay hubisay xoojinta algorithmkeena iyo saxnaanta iyada oo loo marayo noocyo kala duwan oo inputs ah.
Falanqaynta meel bannaan iyo waqtiga adag
Marka la eego, dhibaatada waqtiga ee xalka waxaa lagu go'aamiyaa inta badan tirada xarfaha ee ku jira xarafka ugu horreeya (aan u magacaabno N
) iyo tirada guud ee xarfaha (aan u magacaabno M
). Kasta oo xaraf ah oo ku jira xarafka ugu horreeya, waxaan hubinaa muuqaalkiisa booska u dhigma ee dhammaan xarfaha kale, taasoo keentaysa dhibaato waqti oo ah O(N*M).
Dhibaatada meel bannaan ee xalka waa O(N), maadaama aan kaydinayno xarfaha caadiga ah ee array. Xaaladda ugu xun, halkaas oo dhammaan xarfaha ay yihiin kuwo caadi ah oo ku yaal dhammaan xarfaha, cabbirka array-gan waxay noqon doontaa mid u dhigma dhererka xarafka ugu horreeya.
Wadooyinka Horumarinta
Inkasta oo xalka aanu leeyahay waxtar leh tiro dhexdhexaad ah oo xarfo iyo xarfo, haddana mar walba waxaa jira meel lagu hagaajiyo. Halkan waxaa ku yaal qaar ka mid ah istaraatiijiyadaha lagu kordhinayo waxqabadkiisa:
Joojinta hore: Haddii wakhti kasta oo xaraf aanu ku waafaqsanayn booska u dhigma ee dhammaan xarfaha, waxaan joojin karnaa hore loop-ka, iyadoo la kaydinayo isbarbardhigyo aan loo baahnayn.
Iska horimaadka xarfaha gaaban: Bilaabista xarafka ugu gaaban sida tixraaca ayaa laga yaabaa inuu yareeyo tirada wareegyada, maadaama uu yareeyo tirada ugu badan ee xarfaha ee la hubinayo.
Habka Isku-xidhka: Xogta ballaaran, isticmaalka farsamooyinka habka isku-xidhka si loo barbar dhigo xarfaha si wada jira oo ku yaal xarfaha ayaa laga yaabaa inuu si weyn u yareeyo waqtiga fulinta.
Farsamooyinka Hashing: Isticmaalka hash map si loo ilaaliyo booska xarfaha iyo muuqaalka ayaa laga yaabaa inuu bixiyo hab casri ah si loo ogaado xarfaha caadiga ah, gaar ahaan marka la tacaalayo kooxo ballaaran oo xarfo ah.
Fikradaha Xidhitaanka
Caqabadda xarfaha caadiga ah waxay u adeegtaa sida shahaado muuqata oo ku saabsan qaabka dhibaatooyinka maareynta xarfaha, iyadoo la martiqaadayo horumariyeyaasha inay si qoto dheer ugu galaan nuucyada algorithm iyo qaababka xogta. Iyada oo loo marayo TypeScript, waxaan kaliya helnay xal, laakiin sidoo kale waxaan qabsanay safar cad, badbaado nooc, iyo xallinta dhibaatada oo waxtar leh.
Marka aan ku soo laabanno, waa muhiim in la xasuusto in safarka iyada oo loo marayo caqabadaha wareegga barnaamijka ay tahay mid badan oo ku saabsan wadada la qaaday sida ay u tahay meesha la gaaray. Kasta oo dhibaato ah, oo ay ku jiraan tani, waxay bixisaa fursad gaar ah si loo hagaajiyo xirfadahayaga, dib loogu fikiro siyaabahayaga, iyo, ugu muhiimsan, in la sii wado barashada.