首页 > 解决方案 > 修改字符串的索引

问题描述

我想知道用于替换字符串中的字符(在 javascript 中)的运行时。

例如

let str = "hello world";
str[0] = "n";
console.log(str); // hello world

在严格模式下,这会引发错误,因为您无法修改字符串(只读)。

您将如何在 js 中实现 O(1) 时间、O(1) 空间算法str[index] = char?在 C 中,这是微不足道的,因为访问是 O(1),您可以修改该元素而无需分配新数组并复制值。

我找到了使用 split 来执行此操作的解决方案……但这不是矫枉过正吗?这意味着 O(n) 时间和空间。

想知道这主要是为了面试问题,因为我使用 javascript

标签: javascriptstring

解决方案


您可以使用substring

"use strict";
const replaceCharAt = (s, c, i) => i ? (i != 1 ? c + s.substring(i + 1) : s[0] + c + s.substring(3)) : c + s.substring(i);
let str = "hello world";
str = replaceCharAt(str, "n", 0);
str = replaceCharAt(str, "3", 1);
console.log(str);


推荐阅读