"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 문자열 - JavaScript 문제

문자열 - JavaScript 문제

2024-11-08에 게시됨
검색:240

String - JavaScript Challenges

이 게시물의 모든 코드는 Github 저장소에서 찾을 수 있습니다.


문자열 관련 과제


영숫자임

/**
 * @param {any} char
 * @return {Boolean}
 */

function isAlphaNumeric(char) {
  return /[A-Za-z0-9]/.test(char);
}

// Usage example
console.log(isAlphaNumeric("a")); // => true
console.log(isAlphaNumeric(0)); // => true
console.log(isAlphaNumeric("!")); // => false

카멜 케이스 스네이크 케이스

// camel case to snake case
/**
 * @param {string} str
 * @return {string}
 */
function toKebabCase(str) {
  let temp = str.replace(/[A-Z]/g, function (i) {
    return "_"   i.toLowerCase();
  });

  if (temp[0] === "_") {
    temp = temp.slice(1);
  }

  return temp;
}

// Usage example
console.log(toKebabCase("testMethod")); // => "test_method"

// snake case to camel case
/**
 * @param {string} str
 * @return {string}
 */
function toCamelCase(str) {
  return str.replace(
    /([a-z])_([a-z])/gi,
    (_, left, right) => left   right.toUpperCase()
  );
}

// Usage example
console.log(toCamelCase("test_method")); // => "testMethod"

버전 번호 비교

/**
 * @param {string} version1
 * @param {string} version2
 * @return {number}
 */

function compareVersion(version1, version2) {
  const v1Arr = version1.split(".");
  const v2Arr = version2.split(".");

  for (let i = 0; i  v2Num) {
      return 1;
    } else if (v1Num  1, meaning first one is greater
console.log(compareVersion("12.1.0", "12.1.2")); // => -1, meaning latter one is greater
console.log(compareVersion("5.0.1", "5.0.1")); // => 0, meaning they are equal.

버전 번호 정렬

/**
 * @param {string[]} versions
 * @return {string[]}
 */

function sortVersions(versions) {
  return versions.sort((a, b) => {
    const aParts = a.split(".").map(Number);
    const bParts = b.split(".").map(Number);

    for (let i = 0; i  [ '0.1.1', '0.302.1', '2.3.3', '4.2', '4.3.4.5', '4.3.5' ]

문자열 압축
/**
 * @param {string} str
 * @return {string}
 */

function compress(str) {
  if (!str) {
    return "";
  }

  let compressed = "";
  let count = 1;

  for (let i = 1; i  1) {
        compressed  = count;
      }
      count = 1;
    }
  }

  return compressed;
}

// Usage example
console.log(compress("a")); // 'a'
console.log(compress("aa")); // 'a2'
console.log(compress("aaa")); // 'a3'
console.log(compress("aaab")); // 'a3b'
console.log(compress("aaabb")); // 'a3b2'
console.log(compress("aaabba")); // 'a3b2a'
/** * @param {string} 문자열 * @return {문자열} */ 함수 압축(str) { 만약 (!str) { 반품 ""; } 압축하자 = ""; 개수 = 1로 둡니다. for (let i = 1; i 1) { 압축 = 개수; } 개수 = 1; } } 압축 반환; } // 사용 예 console.log(compress("a")); // '아' console.log(compress("aa")); // 'a2' console.log(compress("aaa")); // 'a3' console.log(compress("aaab")); // 'a3b' console.log(compress("aaabb")); // 'a3b2' console.log(compress("aaabba")); // 'a3b2a'

문자열 압축 풀기
/**
 * @param {string} str
 * @return {string}
 */

function compress(str) {
  if (!str) {
    return "";
  }

  let compressed = "";
  let count = 1;

  for (let i = 1; i  1) {
        compressed  = count;
      }
      count = 1;
    }
  }

  return compressed;
}

// Usage example
console.log(compress("a")); // 'a'
console.log(compress("aa")); // 'a2'
console.log(compress("aaa")); // 'a3'
console.log(compress("aaab")); // 'a3b'
console.log(compress("aaabb")); // 'a3b2'
console.log(compress("aaabba")); // 'a3b2a'
/** * @param {string} 문자열 * @returns {문자열} */ 함수 압축 해제(str) { const 스택 = []; currentNum = 0으로 둡니다. currentStr = ""; for (str의 const char) { if (char >= "0" && char '아바바브' console.log(압축해제("3(ab2(c))")); // => 'abccabccabcc'

문자열에서 가장 긴 단어의 길이 찾기
/**
 * @param {string} str
 * @return {string}
 */

function compress(str) {
  if (!str) {
    return "";
  }

  let compressed = "";
  let count = 1;

  for (let i = 1; i  1) {
        compressed  = count;
      }
      count = 1;
    }
  }

  return compressed;
}

// Usage example
console.log(compress("a")); // 'a'
console.log(compress("aa")); // 'a2'
console.log(compress("aaa")); // 'a3'
console.log(compress("aaab")); // 'a3b'
console.log(compress("aaabb")); // 'a3b2'
console.log(compress("aaabba")); // 'a3b2a'
/** * @param {string} 문자열 * @return {번호} */ 함수 최장길이(str) { const strArr = str.split(" "); 길이를 0으로 놔두세요; for (let i = 0; i 길이) { 길이 = strArr[i].length; } } 반환 길이; } // 사용 예 console.log(longestLength("가장 긴 단어는 가장 긴 단어입니다.")); // => 14

문자열에서 길이가 가장 긴 단어 찾기
/**
 * @param {string} str
 * @return {string}
 */

function compress(str) {
  if (!str) {
    return "";
  }

  let compressed = "";
  let count = 1;

  for (let i = 1; i  1) {
        compressed  = count;
      }
      count = 1;
    }
  }

  return compressed;
}

// Usage example
console.log(compress("a")); // 'a'
console.log(compress("aa")); // 'a2'
console.log(compress("aaa")); // 'a3'
console.log(compress("aaab")); // 'a3b'
console.log(compress("aaabb")); // 'a3b2'
console.log(compress("aaabba")); // 'a3b2a'
/** * @param {string} 문자열 * @return {string[]} */ 함수 최장단어(str) { const strArr = str.split(" "); const 결과 = []; 최대 = 0으로 두십시오. for (strArr의 상수 문자) { if (문자 길이 > 최대) { 최대 = 문자 길이; } } for (strArr의 상수 문자) { if (char.length === 최대) { 결과.푸시(char); } } return result.join(""); } // 사용 예 console.log(longestWord("가장 긴 단어가 가장 긴 단어입니다.")); // => "가장 긴 단어"

가장 자주 등장하는 캐릭터
/**
 * @param {string} str
 * @return {string}
 */

function compress(str) {
  if (!str) {
    return "";
  }

  let compressed = "";
  let count = 1;

  for (let i = 1; i  1) {
        compressed  = count;
      }
      count = 1;
    }
  }

  return compressed;
}

// Usage example
console.log(compress("a")); // 'a'
console.log(compress("aa")); // 'a2'
console.log(compress("aaa")); // 'a3'
console.log(compress("aaab")); // 'a3b'
console.log(compress("aaabb")); // 'a3b2'
console.log(compress("aaabba")); // 'a3b2a'
/** * @param {string} 문자열 * @returns {문자열 | 끈[]} */ 함수 개수(str) { const map = new Map(); const 결과 = []; for (str의 const char) { map.set(char, (map.get(char) ?? 0) 1); } const max = Math.max(...map.values()); for (맵의 const [키, 값]) { if (값 === 최대) { 결과.푸시(키); } } return result.length === 1 ? 결과[0] : 결과; } // 사용 예 console.log(count("abbccc")); // => 'ㄷ' console.log(count("abbcccddd")); // => ['c', 'd'];

문자열 길이 가져오기(이모지 지원)
/**
 * @param {string} str
 * @return {string}
 */

function compress(str) {
  if (!str) {
    return "";
  }

  let compressed = "";
  let count = 1;

  for (let i = 1; i  1) {
        compressed  = count;
      }
      count = 1;
    }
  }

  return compressed;
}

// Usage example
console.log(compress("a")); // 'a'
console.log(compress("aa")); // 'a2'
console.log(compress("aaa")); // 'a3'
console.log(compress("aaab")); // 'a3b'
console.log(compress("aaabb")); // 'a3b2'
console.log(compress("aaabba")); // 'a3b2a'
/** * @param {String} 문자열 * @return {번호} */ 함수 getStringLength(str) { return Array.from(new Intl.Segmenter().segment(str)).length; } // 사용 예 console.log(getStringLength("테스트?")); // => 5 console.log("테스트?".length); // => 6

참조
  • 영숫자 - Wikipedia.org
  • 명명 규칙(프로그래밍) - Wikipedia.org
  • 79. snake_case를 camelCase로 변환 - BFE.dev
  • 소프트웨어 버전 관리 - Wikipedia.org
  • 157. semver 비교 - BFE.dev
  • 165. 버전 번호 비교 - LeetCode
  • 97. 문자열 압축 - BFE.dev
  • 173. 문자열 압축 해제 - BFE.dev
  • 145. 가장 자주 발생하는 문자 -BFE.dev

릴리스 선언문 이 글은 https://dev.to/mitchell_cheng/string-javascript-challenges-54cf?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3