package main
import "math"
func (_ Solution) OneEdit(stringOne string, stringTwo string) bool {
if math.Abs(float64(len(stringOne)-len(stringTwo))) > 1 {
return false
}
// ikkalasi teng bolgan xolatda
if len((stringOne)) == len(stringTwo){
diff := 0
for i := 0; i < len(stringOne); i ++ {
if stringOne[i] != stringTwo[i] {
diff ++
}
}
return diff <= 1
}
// ikkalasidan biri bir biridan kichik yoki katta boladigan xolatda
longer := stringOne
shorter := stringTwo
if len(shorter) > len(longer){
longer = stringTwo
shorter = stringOne
}
i := 0
j := 0
diff := 0
for i < len(longer) && j < len(shorter) {
if longer[i] != shorter[j] {
i ++
diff ++
if diff > 1 {
return false
}
continue
}
i ++
j ++
}
return true
}
xop masalaga qaraymiz, bizda bunday shartlar bor
stringlar teng bolsa
stringlarni uzunliklari har xil bolganda
har xil bolganida ham orasidagi farq bittadan oshmasligi kerak, masalan
hello
hllo bolsa
hello dan e ni olib tashlab tenglashtirib qoysa boladi, ikkta stringni
bizning vazifamiz stringda shudnay ozgarish qilishimiz kerakki ular teng bolishi kerak, birinchi ular orasidagi harflarning farqlarini koramiz. va keyin endi ularning
va ularning harflarini ketma ketligini tekshiramiz uni qanday qilamiz ?
bu juda osson, forga tashaymiz va qachongi ularning harflari bir xil bolmagan vaqtda orasidagi farqni sanaymiz u 1dan oshib ketganida false qaytaramiz
agar 1tadan oshiq bolmasa demak uning harfini replace yoki add qilib stringlarni bir xil qilsa boladi
Hali izoh yo'q. Birinchi bo'ling!