」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 字串 - JavaScript 挑戰

字串 - JavaScript 挑戰

發佈於2024-11-08
瀏覽:683

String - JavaScript Challenges

您可以在 repo 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 (令 i = 1; i 1){ 壓縮=計數; } 計數 = 1; } } 返回壓縮; } // 使用範例 console.log(壓縮(“a”)); // '一個' console.log(壓縮(“aa”)); // 'a2' console.log(壓縮(“aaa”)); // 'a3' console.log(壓縮(“aaab”)); // 'a3b' console.log(壓縮(“aaabb”)); // 'a3b2' console.log(壓縮(“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){ 常量堆疊=[]; 讓當前數量 = 0; 讓當前Str =“”; for (str 的 const char) { if (char >= "0" && char 'ababab' 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 (令 i = 0; i 長度) { 長度 = strArr[i].length; } } 返回長度; } // 使用範例 console.log(longestLength("最長的字是 thelongestword")); // => 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 {字串[]} */ 函數最長的單字(str){ const strArr = str.split(" "); 常量結果 = []; 令最大值= 0; for (strArr 的 const char) { if (char.length > max) { 最大=字元長度; } } for (strArr 的 const char) { if (char.length === max) { 結果.push(char); } } 返回結果.join(""); } // 使用範例 console.log(longestWord("最長的單字是thelongestword")); // => “最長的單字”

最常出現的字符
/**
 * @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){ 常量地圖=新地圖(); 常量結果 = []; for (str 的 const char) { map.set(char, (map.get(char) ?? 0) 1); } const max = Math.max(...map.values()); for (map 的 const [鍵, 值]) { 如果(值===最大值){ 結果.push(key); } } 返回結果.length === 1 ?結果[0]:結果; } // 使用範例 console.log(count("abbccc")); // => 'c' 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。將蛇形命名法轉換為駝峰命名法 - 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如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 了解 MySQL 中的十進位資料類型
    了解 MySQL 中的十進位資料類型
    MySQL 中的 Decimal 資料類型對於金融相關專案至關重要,其中數值的精確度至關重要。最近,我在 Ruby on Rails 專案之一中使用此資料類型時遇到了問題。讓我分享一下我的經驗和學到的東西。 挑戰:超出範圍的數值錯誤 在我的專案期間,我在遷移文件中定義了 Decim...
    程式設計 發佈於2024-11-08
  • 如何在 JavaScript 中有效產生不重複隨機數?
    如何在 JavaScript 中有效產生不重複隨機數?
    在JS中產生不重複的隨機數在JS中產生不重複的隨機數可以使用多種技術來實現。最初,該方法是透過將新產生的數字新增至陣列並與其進行比較來檢查是否已建立新產生的數字。但是,由於過多的遞歸調用,這可能會導致“超出最大調用堆疊大小”錯誤。 一個有效的解決方案是產生一次隨機數字列表,然後按順序處理它。這種方法...
    程式設計 發佈於2024-11-08
  • Filament 如何使用 Trait(建立、更新)後重新導向到清單頁面
    Filament 如何使用 Trait(建立、更新)後重新導向到清單頁面
    要在 Filament v3 中建立或更新資源後重定向到清單頁面,您可以在資源類別中使用自訂特徵。 建立自訂特徵 <?php namespace App\Traits; trait RedirectIndex { protected function getRedirectUrl()...
    程式設計 發佈於2024-11-08
  • 在閱讀本文之前,請勿使用 Prisma ORM!
    在閱讀本文之前,請勿使用 Prisma ORM!
    想像混亂情況,您在NeonDB 中創建一個具有0.5GB 存儲空間的免費數據庫,然後想,“很好,我將使用免費套餐進行測試” 。然後,幾個小時後,收到了致命的電子郵件:「您的儲存空間已被消耗!」。哇,你什麼意思?連椅子都沒有熱起來!答案是什麼呢?我使用了輝煌的 Prisma ORM,為了改進,我全天運...
    程式設計 發佈於2024-11-08
  • Net 套件如何影響 Go 程式中的死鎖偵測?
    Net 套件如何影響 Go 程式中的死鎖偵測?
    網路包導入和死鎖檢測的相互作用在Go 程序中,如果程式運行時通道操作阻塞,則程序最終會收到「死鎖」錯誤。但是,當導入 net 套件時,行為會改變。 有問題的程式碼片段:package main import ( "fmt" "net/http"...
    程式設計 發佈於2024-11-08
  • 如何從 MySQL 列資料建構 PHP 數組?
    如何從 MySQL 列資料建構 PHP 數組?
    從 MySQL 列資料建構 PHP 陣列使用 mysql_fetch_array 從 MySQL 列檢索資料會產生一個表示單行的陣列。要建立一個由特定列中所有行的值組成的數組,一種有效的方法是迭代該數組並組裝一個新數組:$column = array(); while ($row = mysql_f...
    程式設計 發佈於2024-11-08
  • Go中如何實現禁用語句的高效日誌記錄?
    Go中如何實現禁用語句的高效日誌記錄?
    Go 中禁用語句的高效日誌記錄在關鍵路徑中,嵌入可以動態切換的調試/跟踪日誌記錄語句是有益的運轉時。這種做法非常適合調試離線生產系統或測試鏡像生產環境的系統。 但是,這種類型的日誌記錄有一個關鍵要求:禁用的語句必須對效能影響最小。在 C/C 中,這是透過 LOG 巨集實現的,該巨集抑制參數求值,直到...
    程式設計 發佈於2024-11-08
  • 如何使用 JavaScript 正規表示式從 HTML 中提取多行文字?
    如何使用 JavaScript 正規表示式從 HTML 中提取多行文字?
    使用JavaScript 正規表示式從HTML 中提取多行文字當嘗試使用JavaScript 中的正規表示式從HTML 檢索字串時,這一點至關重要考慮修飾符的兼容性。在您的場景中,您遇到了多行標誌 (/m) 的問題。 Dotall 修飾符與JavaScript此問題源自於JavaScript 不支援...
    程式設計 發佈於2024-11-08
  • 在 MySQL 中以 BLOB 形式儲存的影像周圍回顯文字時,如何避免顯示問題?
    在 MySQL 中以 BLOB 形式儲存的影像周圍回顯文字時,如何避免顯示問題?
    了解MySQL BLOB 的圖像顯示問題當嘗試顯示在MySQL 資料庫中以BLOB 形式儲存的圖像時,開發人員經常會遇到任何文字回顯的問題或圖片標題後導致圖片顯示不正確。 問題原因問題出現是因為網頁瀏覽器將影像資料流外部回顯的任何文字解釋為影像的一部分。這是因為標題和影像資料必須連續且不間斷地傳送。...
    程式設計 發佈於2024-11-08
  • 如何在Go中高效率讀寫CSV檔?
    如何在Go中高效率讀寫CSV檔?
    Go 中高效讀寫 CSV 檔案資料處理中的一個常見任務是以高效能方式讀寫 CSV 檔案。問題中提供的程式碼片段演示了一種讀取 CSV 檔案、處理資料並將其寫回的緩慢方法。潛在的低效率在於在處理之前將整個文件載入到記憶體中的方法。 為了優化程式碼,建議透過呼叫 .Read() 增量讀取檔案並一次處理一...
    程式設計 發佈於2024-11-08
  • 如何使用 PHP 將 HTML 轉換為 PDF?
    如何使用 PHP 將 HTML 轉換為 PDF?
    使用PHP 從HTML 建立PDF雖然HTML 通常用於Web 內容,但在某些情況下可能需要將HTML 轉換為PDF 。本文探討了使用 PHP 實作這種轉換的可行性和方法。 使用 PHP 將 HTML 轉換為 PDF 可能嗎? 是的,使用 PHP 將 HTML 轉換為 PDF 是可能的可能的。然而,...
    程式設計 發佈於2024-11-08
  • 方括號內的交替是正規表示式中的常見陷阱嗎?
    方括號內的交替是正規表示式中的常見陷阱嗎?
    方括號內的交替:正規表示式中的常見陷阱在正規表示式領域,交替運算子(|) 起著關鍵作用匹配多個備選方案的作用。但是,當嘗試在方括號內使用交替時,例如在提供的正規表示式範例中,會出現某些複雜情況,可能導致意外行為。 問題:不符的運算子給定正規表示式中遇到的問題源自於方括號與交替運算子結合使用不當。在正...
    程式設計 發佈於2024-11-08
  • 在 C++ 中如何將整數向量轉換為分隔字串?
    在 C++ 中如何將整數向量轉換為分隔字串?
    將整數向量連接成分隔字串在C 中,將整數向量轉換為由特定字元分隔的字串可以是使用Stringstream一種方法涉及使用std::stringstream,如以下程式碼所示:#include <sstream> //... std::stringstream ss; for (size_...
    程式設計 發佈於2024-11-08
  • 為什麼我在 MySQL 網站檢索中收到「未選擇資料庫」錯誤?
    為什麼我在 MySQL 網站檢索中收到「未選擇資料庫」錯誤?
    解決MySQL 網站檢索中的「未選擇資料庫」錯誤嘗試從網站上託管的MySQL 資料庫檢索資料時(例如、 GoDaddy),您可能會遇到“java.sql.SQLException:未選擇資料庫”錯誤。此錯誤表示您在 JDBC 連線中使用的資料庫 URL 未指定資料庫名稱。 Java 中資料庫URL ...
    程式設計 發佈於2024-11-08
  • 如何在 CSS 中建立平滑的卡片組
    如何在 CSS 中建立平滑的卡片組
    創建流暢且具有視覺吸引力的卡片組是現代 Web 開發的重要組成部分,使您能夠以結構化且易於理解的格式顯示內容。在這篇文章中,我們將探討如何使用 HTML、CSS 和 JavaScript 建立流暢的卡片組。 了解牌組 卡組是顯示在一起的卡組件的集合。它們通常用於展示相關內容,例如產品、服務或文章。...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3