One Away: 교체, 추가, 제거

6864 단어 javascript
One Away: 문자열에 대해 수행할 수 있는 세 가지 유형의 편집: 문자 삽입, 문자 제거 또는 문자 교체가 있습니다. 두 개의 문자열이 주어지면 한 번 편집(또는 편집이 전혀 없는지) 여부를 확인하는 함수를 작성하십시오.

예시
창백한, ple -> 참
창백하다, 창백하다 -> 참
창백한 베일 -> 사실
창백하고 굽다 -> 거짓

삽입, 제거 및 대체 편집을 위해 문자열을 확인할 필요가 없음을 확인하십시오. 길이
문자열 중 어떤 것을 확인해야 하는지 나타냅니다.

const oneWay = (str1, str2) => {
  // check which function
  if (str1.length === str2.length) {
    return oneEditReplace(str1, str2);
  } else if (str1.length + 1 == str2.length) {
    return oneEditinsert(str1, str2);
  } else if (str1.length - 1 == str2.length) {
    return oneEditinsert(str2, str1);
  }
};

const oneEditReplace = (s1, s2) => {
  let foundDifference = false;
  for (let i = 0; i < s1.length; i++) {
    if (s1.charAt(i) != s2.charAt(i)) {
      if (foundDifference) {
        return false;
      }
      foundDifference = true;
    }
  }
  return foundDifference;
};

const oneEditinsert = (s1, s2) => {
  let indexl = 0;
  let index2 = 0;
  while (index2 < s2.length && indexl < s1.length) {
    if (s1.charAt(indexl) != s2.charAt(index2)) {
      if (indexl != index2) {
        return false;
      }
      index2++;
    } else {
      indexl++;
      index2++;
    }
  }
  return true;
};

console.log(oneWay("bal", "bale"));

좋은 웹페이지 즐겨찾기