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

如何按字符首次出现顺序对字符串字符排序?附代码示例

修改后的代码
function main() {
  let input = prompt("Enter a string:").toLowerCase().replace(/\s/g, "");
  // 记录字符首次出现的顺序
  let charOrder = [];
  // 统计每个字符的出现次数
  let charCount = {};

  // 遍历输入字符串,统计次数并记录首次出现顺序
  for (let char of input) {
    if (!charCount[char]) {
      charCount[char] = 0;
      charOrder.push(char);
    }
    charCount[char]++;
  }

  // 按首次出现顺序拼接结果,每个字符重复对应次数
  let process = "";
  for (let char of charOrder) {
    process += char.repeat(charCount[char]);
  }

  console.log(process);
}
代码说明
  1. 输入处理:保留原逻辑,将输入转为小写并移除所有空格。
  2. 统计与记录顺序:
    • 用charOrder数组存储字符首次出现的顺序,确保后续拼接严格遵循该顺序。
    • 用charCount对象统计每个字符的出现次数,遍历输入时,若字符未被统计过,就将其加入charOrder并初始化次数为0,之后每遇到一次该字符就把次数加1。
  3. 生成结果:遍历charOrder数组,对每个字符调用repeat()方法传入对应的出现次数,拼接成最终结果字符串。
验证示例

输入"Learning Center"时,处理后的输入为"learningcenter":

  • 首次出现顺序:['l', 'e', 'a', 'r', 'n', 'i', 'g', 'c', 't']
  • 字符次数:{l:1, e:3, a:1, r:2, n:3, i:1, g:1, c:1, t:1}
  • 最终拼接结果:"l" + "eee" + "a" + "rr" + "nnn" + "i" + "g" + "c" + "t" = "leeearrnnnigct"
    (注:若你的预期输出"leeearrnnigct"中n仅重复2次,可能是输入字符串的实际字符数差异,上述代码逻辑完全符合「按首次出现顺序,重复对应出现次数」的需求)

内容的提问来源于stack exchange,提问作者M Nasihul Umam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:15:15