如何在 JavaScript 中將給定字串中的每個字母在字母表中向下移動 N 個位置?


在給定的問題陳述中,我們的目標是藉助 Javascript 功能將給定字串中的每個字母在字母表中向下移動 N 個位置。因此,我們將使用一些基本的 Javascript 方法來完成給定的任務。

理解問題

手頭的問題是使用 Javascript 將給定字串的字元在字母表中向下移動 N 個位置。這個問題的目的是我們需要將字串作為輸入,並且必須透過將每個字母在字母表中向下移動 N 個位置來更新給定的字串。例如,如果字母 A 向下移動 2 個位置,它將變成 C;如果 Y 向下移動 2 個位置,它將變成 A。因此,最終我們必須顯示移動所有給定字串字元後結果。

給定問題的邏輯

為了解決這個問題,我們將建立一個函式,該函式將接受兩個引數作為輸入:第一個是字串 str,第二個是每個字母移動的位置數 N。在這個函式中,我們將定義字母表作為一個字串,其中包含所有小寫字母。然後,我們將使用正則表示式來匹配字串中所有的小寫字母和大寫字母。

現在,對於每個匹配的字母,我們將將其轉換為小寫,然後在字母表字串中找到其當前索引。之後,我們將透過將 N 加到當前索引來計算新索引,並使用模運算子 % 檢查它是否圍繞字母表迴圈。之後,我們將從字母表字串的新索引處檢索移動的字元。並且,如果原始字串中存在大寫字母,我們也將進行轉換。最後顯示帶有移動字母的更新後的字串。

演算法

步驟 1:因為我們必須將給定的輸入字串在字母表中向下移動 n 個位置,所以為了執行此任務,我們將建立一個函式並將其命名為 shiftString()。此函式接受兩個引數:第一個是字串 str,第二個是數字 N。N 表示我們必須將每個字元向下移動 N 個位置。

步驟 2:在函式內部,我們將宣告所有字母的字串,並將其命名為 alphabet。此字串將用於檢查輸入字串中存在的每個字母的索引,以及將每個字母向下移動 N 個位置。

步驟 3:宣告字母表字串後,我們將使用正則表示式來匹配字串中存在的所有小寫字母和大寫字母。如果字串中存在任何大寫字母,則將其轉換為小寫。

步驟 4:然後檢查字串中每個字母的索引。

步驟 5:因為我們必須將每個字母向下移動 N 個位置,所以在此步驟中,我們將每個字母向下移動 N 個位置,並使其圍繞字母表迴圈。

步驟 6:現在,移動的字元將儲存在 shiftedChar 變數中。

步驟 7:在倒數第二步中,我們還將檢查是否存在任何大寫字母,因此在大寫字母的位置,我們將再次將其轉換為 shiftedChar 字串中的大寫字母。

步驟 8:最後,我們將返回 shiftedStr 作為結果。

示例

//Function to shirt the string n places down
function shiftString(str, N) {
   const alphabet = 'abcdefghijklmnopqrstuvwxyz';
   const shiftedStr = str.replace(/[a-z]/gi, (match) => {
      const lowercase = match.toLowerCase();
      const currentIndex = alphabet.indexOf(lowercase);
      const newIndex = (currentIndex + N) % 26; // Wrapping around the alphabet
      const shiftedChar = alphabet[newIndex];
      return (lowercase === match) ? shiftedChar : shiftedChar.toUpperCase();
   });
   return shiftedStr;
}

const inputString = 'Hello, Tutorials Point!';
const shiftedString = shiftString(inputString, 3);
console.log(shiftedString);

輸出

Khoor, Wxwruldov Srlqw!

複雜度

將給定字串中的每個字母在字母表中向下移動 N 個位置的給定問題的時效複雜度為 O(n),其中 n 是輸入字串的大小。因為程式碼遍歷給定字串中的字母並執行操作以將每個字母向下移動到字母表中。程式碼使用記憶體來儲存字母表字串,該字串的固定長度為 26 個字元。因此,空間複雜度為 O(1),因為它不依賴於輸入字串的大小。

結論

我們已經實現的程式碼有效地解決了將每個字元在給定字串中向下移動 N 個位置的給定問題。該程式碼具有線性時間複雜度,這確保了程式碼能夠處理任何長度的輸入字串。並且程式碼還保持恆定的空間複雜度。

更新於:2023年8月14日

1K+ 瀏覽量

開啟您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.