You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅用一个变量反转字符串及指定约束下的字符串反转实现

嘿,这两个字符串反转的问题我来给你拆解下,都是纯手动实现的方案,完全符合你的要求~

问题1:仅使用一个变量实现字符串反转

这个需求的核心是只用一个变量完成反转,不能额外声明其他变量。我的思路是通过循环交换字符串首尾对应的字符,利用字符串的slice方法拼接新字符串,全程只操作原变量本身:

let s = "hello world";
// 循环到字符串中间位置即可,避免重复交换
for (let i = 0; i < Math.floor(s.length / 2); i++) {
  // 交换第i位和对称位置(s.length-1-i)的字符
  s = s.slice(0, i) + s[s.length - 1 - i] + s.slice(i + 1, s.length - 1 - i) + s[i] + s.slice(s.length - i);
}
console.log(s); // 输出 "dlrow olleh"

方案说明:

  • 循环次数取字符串长度的一半(向下取整),避免对同一对字符重复交换
  • 用slice截取字符串的不同片段,再把交换后的字符拼接进去,全程只修改原变量s,没有新增其他变量

问题2:满足特定条件的全局字符串反转

针对你给出的场景,我用while循环实现了完全符合要求的方案,只额外使用了允许的变量p,没有用到任何禁用的内置方法:

let s = 'any string';
let p;
// 初始化p为空字符串,用来构建反转后的结果
p = '';
// 从原字符串的最后一个字符索引开始遍历
let i = s.length - 1;
while (i >= 0) {
  // 逐个将字符追加到p中
  p += s[i];
  i--;
}
// 把反转后的结果赋值回全局变量s
s = p;
console.log(s); // 输出 "gnirts yna"

方案说明:

  1. 完全符合所有约束:
    • 字符串s处于全局作用域,没有作为函数参数传入
    • 使用了while循环完成遍历操作
    • 只额外使用了允许的变量p,没有新增其他变量或函数
    • 未使用join、split、reverse等禁用的内置方法
  2. 逻辑直观易懂:从原字符串的末尾开始,逐个把字符拼接到p中,最后将p的结果赋值给s,完成全局字符串的反转

内容的提问来源于stack exchange,提问作者Maxim Gordiyenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:45