簡體   English   中英

javascript 最佳地反轉字符串中的 substring

[英]javascript reverse a substring inside a string optimally

我有一個場景需要反轉字符串中的 substring。 Javascript 字符串是不可變的,傳統的字符串交換技術在這里不起作用。 所以我決定使用string.split('')string.join('')方法來獲得解決方案。 請檢查下面的代碼。

function reverseAString(str, startIndex, endIndex) {
  let left = startIndex;
  let right = endIndex;
  let output = str;
  while(left < right) {
    const arr = output.split('');
    let temp = arr[left]
    arr[left] = arr[right]
    arr[right] = temp;
    output = arr.join('');
    left += 1;
    right -= 1;
  }
  return output
}

這按預期工作。 但是有沒有更好的方法來反轉 substring 因為上述解決方案不是實現反轉的最佳方法?

這是您的 function 但要簡化。 我們可以將調用字符串方法鏈接到數組方法中。 Array.prototype.reverse()用於反轉數組, Array.prototype.join()用於將數組中的所有元素連接成一個字符串。 String.prototype.substring()用於從原始字符串中剪切出字符串,但不會更改/更改原始字符串。

 function reverseASubstring(str, startIndex, endIndex) { let reversedStr = str.substring(startIndex, endIndex).split("").reverse().join(""); return str.substring(0, startIndex) + reversedStr + str.substring(endIndex); } console.log(reverseASubstring("Tony is Tony in reverse.", 0, 4));

該解決方案構建了一個具有兩個捕獲組的正則表達式,一個用於跳過的字符數(例如起始索引),一個用於反轉的字符數。 有了這個,您可以應用單個正則表達式替換,使用.split('').reverse().join('')反轉第二個捕獲組

 function reverseASubstring(str, start, end) { let regex = new RegExp('^(.{' + start + '})(.{' + (end - start + 1) + '})'); return str.replace(regex, (m, c1, c2) => c1 + c2.split('').reverse().join('')); } let str = 'Hello world.'; console.log(str, 0, 4, '=>', reverseASubstring(str, 0, 4)); console.log(str, 6, 10, '=>', reverseASubstring(str, 6, 10));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM