当前位置: 首页 > 知识库问答 >
问题:

洗牌字符串,使相邻的两个字母不相同

公冶嘉茂
2023-03-14

我一直在试图解决这个面试问题,它要求洗牌字符串,以便没有两个相邻的字母是相同的,例如,

ABCC->ACBC

我想到的方法是

1)遍历输入字符串并将(字母、频率)对存储在某个集合中

2)现在通过拉取频率最高(即>0)的字母来构建一个结果字符串

3)每当我们拉一封信时,更新(减少)频率

4)如果所有字母的频率为零,则返回结果字符串

5)如果只剩下一个频率大于1的字母,则返回错误

我假设是Unicode字符。

关于使用什么集合有什么想法吗?还是另一种方法?

共有1个答案

公孙栋
2023-03-14

您可以按频率对字母进行排序,将排序的列表一分为二,并通过依次从两半中提取字母来构造输出。这需要一个单一的排序。

示例:

  • 初始字符串:acabbacab
  • 排序:aaaabbbcc
  • 拆分:aaaa+bbbcc
  • 组合:abababcac

如果最高频率的字母数超过字符串长度的一半,则该问题无法解决。

 类似资料:
  • 从序列中删除所有两个按顺序排列的字母表,并保留至少一个不能删除更多组合的字母表 例如 请给出解决这个问题的任何建议或想法。无法思考如何以编程方式处理字母表序列。

  • 问题内容: 通过搜索发现了类似的问题,但我是一位新的(糟糕的)程序员,无法理解答案。 我有一个.txt文件,其中包含多个字符串,以’-‘分隔。我使用拆分将一些字符串分成变量,其中两个相等,但是在if语句中它们不相等。 这将产生以下结果: 瑞典 瑞典 没有 在两个“ Sweden”字符串之前和之后都有一个空格,并且它们都用大写字母“ S”编写,但不相等吗?我在哪里搞砸了? 问题答案: 最后一个元素包

  • 问题内容: 我有两个字符串,它们看起来都一样: 但是,检查相等性表明它们不是。 我还尝试从命令提示符中复制两个字符串,并将它们作为新变量粘贴回去,但是它们仍然不相等。我有80%的把握是因为它们的编码方式很怪异,插入了一些我看不见的奇数字符,但是使用type()都只是显示为字符串。 有什么办法可以看到“真实”字符串?任何帮助表示赞赏。 问题答案: 他们是不一样的; using显示了这两个值之间的差异

  • 问题内容: 我有以下问题 给定一个字符串,返回一个“ cleaned”字符串,其中相同的相邻字符已减少为一个字符。如此产量。 我正在尝试输入我的代码 我的代码如下。在进行相邻字符比较之后,我得到了部分追加的字符串,因此截至目前,我得到的不是正确输出的追加的stringBuilder 我应该得到的输出为, 观察: *在我获得了附加的字符串“ abc”之后,然后当我移动比较那一部分面临问题的最终字符“

  • 我有一个算法,在一些不同的字符串之间给我一个分数。我的想法是:如果两个字符串之间的分数高于0'80,那么这两个字符串将被认为是相同的,当我应用keyby(“name”)时,那些相似的字符串将被键入,因为它们具有完全相同的名称。 直观示例: DataStream1-----约翰·洛克,米奇·米克,威尔·威廉姆斯 希望你能理解,谢谢!

  • 问题内容: 为什么以下语句返回? 我也尝试过在字符串周围使用单引号。我唯一可以评估的方法是使用运算符,而不是 我的猜测是PHP将它视为某种方程式,但似乎有些奇怪。 有人可以详细说明吗? 问题答案: 是float数字格式,因此它们在比较时将转换为数字。 并且都将是因为它们太小。 对于在php中, 如果将数字与字符串进行比较,或者比较涉及 数字字符串 ,则每个字符串将转换为 数字 ,然后以数字方式进行