陣列反轉演算法問題的 JavaScript 解決方案
我們的要求是必須編寫一個函式來反轉一個數組,但不能改變陣列中一個特殊字元的索引,如下例所示 −
如果“#”是特殊字元,那麼以下陣列,
[18,-4,'#',0,8,'#',5]
應返回 −
[5, 8, "#", 0, -4, "#", 18],
這裡,數字反轉,不包括保持其索引的“#”。
我們來寫一下這段程式碼。
我們將在其中使用雙指標方法,start 和 end 分別指向陣列的最左側和最右側。
如果在任何索引中找到特殊字元,我們會跳過該索引並繼續迭代,當我們找到沒有特殊字元的索引對時,我們交換其值,當 start 指標小於右側指標時,我們將繼續執行此操作。
示例
const arr = [18,-4,'#',0,8,'#',5];
const reverseArray = (arr, special) => {
let start = 0, end = arr.length - 1, temp;
while(start < end){
if(arr[start] === special){
start++;
continue;
};
if(arr[end] === special){
end--;
continue;
};
temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
};
};
reverseArray(arr, '#');
console.log(arr);輸出
控制檯中的輸出將為 −
[ 5, 8, '#', 0, -4, '#', 18 ]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP