如何从随机字符串中删除单词“ BALLOON”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从随机字符串中删除单词“ BALLOON”?相关的知识,希望对你有一定的参考价值。

给出由大写英文字母组成的字符串S。我们可以一举删除S中的七个字母,形成单词BALLOON”(一个'B',一个'A',两个'L,两个'O'和一个'N'),并在S中保留较短的单词。缩短的S中剩余的字母足以允许删除单词“ BALLOON”的另一个实例,则可以执行下一步。给定字符串S为,我们可以应用于S的最大次数是多少?长度N,返回可以应用的最大移动数量。

示例:

给出S =“ BAONXXOLL”,该函数应返回1。BAONXXOLL-> XX

给出S =“ BAOOLLNNOLOLGBAX”,该函数应返回2。BAOOLLNNOLOLGBAX-> BOLLNOGAX-> GX

给出S =“ QAWABAWONL”,该函数应返回0。QAWABAWONL

给出S =“ ONLABLABLOON”,该函数应返回1。ONLABLABLOON-> OLABN

为以下假设编写一种有效的算法:

•N是在[1 ... 200,000j;]范围内的整数

•字符串S仅包含大写字母(A-Z)。

这是我想出的。

function removeBALLOON(temp){ // remember count but not move
  letRem = 0;
  if(temp.length >= 7){ // check if s contains balloon
    count++;
    let str = temp.replace(/[BALON]/g,(c)=>{ // remove balloon from s until 7 removals done
      if(letRem >= 7) return c;
      letRem++;
      return '';
    })
    let final = removeBALLOON(str); // run again
    return final;
  }
  return count;
}

count = 0;

// console.log(removeBALLOON("BAONXXOLL"));
console.log(removeBALLOON('BAOOLLNNOLOLGBAX'));

给出由大写英文字母组成的字符串S。一口气,我们可以从S删除七个字母,形成单词BALLOON”(一个'B',一个'A',两个'L,两个'O'和一个'N'),然后离开...

答案

感谢@Barmar的想法。这是我想出的:

以上是关于如何从随机字符串中删除单词“ BALLOON”?的主要内容,如果未能解决你的问题,请参考以下文章

如何从字符串中删除特定单词?

如何从字符串中删除特定单词 - Ruby

如何从字符串中删除所有非希伯来字符并将单词放入数组中?

如何从 PL/SQL 中的字符串中删除最后 3 个单词? [复制]

从字符串中获取随机的单词序列?

如何随机化文本文件中获得的单词