字谜索引计算[重复]

2023-12-26

给定一个由字符 A-Z 组成的最长 25 个字符的输入字符串,输出其在输入字符串所有可能的字谜词按字母顺序排序的列表中的索引。输入字符串不区分大小写。输入的字符可以重复。该应用程序必须在 500 毫秒内完成,并且占用的内存少于 1GB。

乍一看,如果没有任意精度的数学库,这似乎是不可能完成的。最坏的情况输入是 25 个唯一字符,结果是 25!可能的字谜。 25!比 2^64 大几个数量级。因为索引和字符串之间的关系不是直接的,必须计算,所以没有办法简单地将字符串转换为数字。

这来自我前几天收到的面试挑战。我无法为他们想出解决方案,但他们坚持认为确实有一个好的解决方案......


给定单词的字母频率,很容易计算出该单词的字谜词数。它是字符总数的阶乘除以频率的阶乘,这些数字也称为多项式系数 http://en.wikipedia.org/wiki/Multinomial_theorem#Number_of_unique_permutations_of_words.

利用这一事实,您可以通过计算按字母顺序排列在其前面的前缀的 anagram 数量来获取任何 anagram 的索引。以 MISSISSIPPI 为例:字母出现频率为 I: 4、M: 1、P: 2、S: 4,总共 11!/(4!1!2!4!) = 34650 个字谜。

  • 以 I 开头的字谜词数量为 10!/(3!1!2!4!) = 12600
  • 以 MII 开头的字谜词数量为 8!/(2!0!2!4!) = 420
  • 以 MIP 开头的字谜词数量为 8!/(3!0!1!4!) = 280
  • 以 MISI 开头的字谜词数量为 7!/(2!0!2!3!) = 210
  • 以 MISP 开头的字谜数量为 7!/(3!0!1!3!) = 140
  • 以 MISSII 开头的字谜词数量为 5!/(1!0!2!2!) = 30
  • 以 MISSIP 开头的字谜词数量为 5!/(2!0!1!2!) = 30
  • 等等...

将这些数字相加即可得到索引。但是,是的,您可能需要一些任意精度的数字库,因为正如您所说,在最坏的情况下有 25 个!字谜词和索引可能会超出 64 位整数的范围。

但这感觉不太优雅,如果有更好的解决方案,我很乐意听到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字谜索引计算[重复] 的相关文章

  • Java:如何实现3和?

    我正在研究 3 Sum 来自己实现它 并遇到了以下规则的实现 给定一个由 n 个整数组成的数组 S S 中是否存在满足 a b c 0 的元素 a b c 查找数组中所有总和为零的唯一三元组 注意 三元组 a b c 中的元素必须按非降序排
  • 在关键服务器上对字符串进行内存受限的外部排序,并合并和计算重复项(数十亿个文件名)

    我们的服务器生成如下文件 c521c143 2a23 42ef 89d1 557915e2323a sign xml在其日志文件夹中 第一部分是GUID 第二部分是名称模板 我想计算具有同名模板的文件的数量 例如 我们有 c521c143
  • 使用数学符号注释 Adob​​e Reader PDF

    我阅读的许多数学教科书和其他文献都是 PDF 格式 因此我经常使用 Adob e Reader 注释工具对它们进行注释 我确实找到了一个有用的指南 http cjasn asnjournals org site misc annotatin
  • 用 Java 创建迷宫求解算法

    我被分配了用 Java 创建迷宫求解器的任务 这是任务 Write an application that finds a path through a maze The maze should be read from a file A
  • 具有非常大的数字的除法

    我只是想知道在处理大数字时有哪些不同的除法策略 我所说的大数字是指 50 位数字 例如 9237639100273856744937827364095876289200667937278 82637448262718273966299344
  • 字符串排序真的是 O(n^2logn) 吗? [复制]

    这个问题在这里已经有答案了 我读了以下内容 排序需要 O NlogN 那么它怎么是 O N 2logN 我们在这里想念的是 两个字符串的比较不是 O 1 在最坏的情况下 需要 在 所以最终的复杂度是O N 2logN 它是否正确 我一直认为
  • 如何在给定目标索引数组的情况下对数组进行就地排序?

    你如何对给定的数组进行排序arr in place给定目标索引数组ind 例如 var arr A B C D E F var ind 4 0 5 2 1 3 rearrange arr ind console log arr gt B E
  • 如何求解:T(n) = T(n - 1) + n

    我已经解决了以下问题 T n T n 1 n O n 2 现在 当我解决这个问题时 我发现界限非常松散 我是否做错了什么 或者只是这样 您还需要一个递归关系的基本情况 T 1 c T n T n 1 n 为了解决这个问题 您可以首先猜测一个
  • 寻找距离原点最近的 100 颗恒星的算法

    首先让我提出正确的问题 问 有一个文件包含超过一百万个点 x y 每个点代表一颗星星 a b 处有一颗行星地球 现在 任务是构建一种算法 返回距离地球最近的 100 颗恒星 您的算法的时间和空间复杂度是多少 这个问题在各种采访中被问过很多次
  • 固定大小集以包含给定集的最大数量

    我有大约 1000 组尺寸 1 4 1 3 3 5 6 4 5 6 7 5 25 42 67 100 是否有可能找到包含最大数量的给定集合的大小为 20 的集合 检查每一个100 80 20 集 效率低下 我不太确定这是 NP 完全的 考虑
  • 如何将一组重叠范围划分为不重叠范围?

    假设您有一组范围 0 100 一 0 75 b 95 150 c 120 130 d 显然 这些范围在某些点上重叠 您将如何剖析这些范围以生成不重叠范围的列表 同时保留与其原始范围相关的信息 在本例中为范围后面的字母 例如 运行算法后的上述
  • 最慢的计算复杂度(Big-O)

    在这些算法中 我知道 Alg1 是最快的 因为它是 n 平方的 接下来是 Alg4 因为它是 n 的立方 然后 Alg2 可能是最慢的 因为它是 2 n 这应该具有非常差的性能 然而Alg3和Alg5在我的阅读速度方面还没有遇到过 这两种算
  • 如何求小于给定数的最大2次方

    我需要找到小于给定数字的最大 2 次幂 我陷入困境 找不到任何解决方案 Code public class MathPow public int largestPowerOf2 int n int res 2 while res lt n
  • Haskell 中列表列表的笛卡尔积

    给定一个长度列表的列表x所有子列表的长度都相同y 输出y x长度列表x包含每个子列表中的一项 例子 x 3 y 2 1 2 3 4 5 6 Output 2 3 8不同的输出 1 3 5 1 4 5 1 3 6 1 4 6 2 3 5 2
  • 分而治之策略来确定列表中是否有超过 1/3 的相同元素

    我正在使用分治算法来确定列表中是否有超过 1 3 的元素相同 例如 1 2 3 4 不 所有元素都是唯一的 1 1 2 4 5 是的 其中 2 个是相同的 没有排序 是否有分而治之的策略 我陷入了如何划分的困境 def is valid i
  • C 埃及分数

    古埃及人仅使用以下形式的分数1 n因此任何其他分数都必须表示为这些单位分数的总和 而且 所有单位分数都是不同的 在C或Java中使任何分数成为埃及分数 总和越少越好 的好方法是什么 可以使用什么算法 分支定界 a 例如 3 4 1 2 1
  • 用 C++ 生成 AST

    我正在用 C 制作一个解释器 到目前为止我已经有了词法分析器来生成标记 问题是我不确定如何生成 行走 解析树 我正在考虑使用数组数组来制作解析树 但我不确定如何以正确的顺序将标记实际插入到解析树中 我不确定是自上而下 左右还是自下而上 左右
  • 这个按位运算如何检查 2 的幂?

    我正在看一些应该很简单的代码 但我的数学在这里严重失败 下面是一个使用以下条件检查数字是否为 2 的幂的条件 if num 1 num num 1 make num pow of 2 我的问题是 如何在 num 和 num 1 之间使用按位
  • 在网络上编写数学方程的最佳方法是什么?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我正在开发一个与数学相关的网页 并正在寻找一种将数学方程轻松写入网页的解决方案 目前我可以使用
  • 使用并集查找(又名不相交集)检测图是否是二分图

    我正在 Spoj 上做一个问题 基本上可以简化为检测图是否是二分图 我正在尝试使用 dfs 为图表着色 但它太慢了 有人评论这个 没有 bfs 没有 dfs 没有二部图 简单的并查集就可以做到 确实速度很快 提示 1 偶数长度的环不会影响两

随机推荐

  • Azure Functions RunOnStartUp 在配置中设置而不是在编译时设置?

    我有一个 Azure 计时器触发函数 计划在生产中每 3 个月运行一次 然而 在测试环境中 我希望它在每次触发时在启动时运行 目前我有 TimerTrigger TimerInterval RunOnStartup false 我真的不想改
  • 使用 dplyr 和 rollapply 在数据框中滚动预测

    我的第一个问题在这里 我的目标是 给定一个带有预测变量的数据框 每列一个预测变量 行观察值 使用 lm 拟合回归 然后使用滚动窗口使用最后一个观察值来预测值 数据框如下所示 gt DfPredictor 1 40 Y X1 X2 X3 X4
  • 为什么人们一致推荐使用 appConfig 而不是使用设置文件? (。网)

    我经常看到这样的问题的答案 我应该如何在我的 NET 应用程序中存储设置 是通过手动向 app config 或 web config 添加条目来编辑 app config 文件 如下所示
  • 参数“ContactsCtrl”不是函数,未定义

    我在 AngularJS 路由和控制器中遇到问题 这是代码 索引 html div div index js var myApp angular module contacts
  • 水豚服务器和浏览器错误,服务器上没有任何痕迹

    由于某种原因 我的黄瓜测试之一似乎在 poltergeist 驱动程序和 Rails 服务器上都失败了 我得到了浏览器崩溃的完整跟踪信息 但服务器端几乎没有任何信息 当我打开水豚屏幕截图时 我只看到 内部服务器错误 未定义的方法name对于
  • 如何在ckeditor5中的`a`标签中添加“target”属性?

    我已经创建了自己的链接插件 现在我想添加一些其他属性a插件生成的标签 例如target rel 但我无法完成它 这是我的转换器插件代码 我应该添加哪些转换器以便a标签可以支持其他属性吗 license Copyright c 2003 20
  • C++ WinAPI 后台窗口截图

    我想截取没有焦点的窗口的屏幕截图 我的功能适用于某些窗口 但不适用于所有窗口 我不知道为什么 我尝试用它来捕获 Bluestacks App Player 的窗口 效果非常好 但对于 Nox App Player 和其他一些游戏来说 它根本
  • 简化具有重复关联类型限制的 where 子句

    我编写了以下函数来对迭代器求和 use std ops Add fn sum iter i s I init I Item gt I Item where I Iterator Clone i Item Add i i
  • Solr 字段崩溃

    I read http wiki apache org solr FieldCollapsing http wiki apache org solr FieldCollapsing 我尝试了查询 我并没有看到这个领域崩溃 我的意思是我看到了
  • SSRS 的自动化部署选项

    我的任务是研究如何自动化 SSRS 2012 报告的部署过程 有什么好的工具吗 我正在考虑类似按一个按钮 报告就会被部署的事情 Thanks 为了部署我们的 SSRS 报告 我们使用这个可爱的 powershell 项目 https git
  • std::reference_wrapper 和简单指针有什么区别?

    为什么需要有std reference wrapper http en cppreference com w cpp utility functional reference wrapper 应该用在哪里 它与简单的指针有什么不同 它的性能
  • 反应本机相机胶卷

    没有注意到太多关于如何使用 React Native 中的 CameraRoll 库的示例代码 指南 我发现文档中的示例有点 模糊 且令人困惑 我第一次使用任何 API 所以我也不完全理解我应该如何使用该库 到目前为止 我已经将其导入为 i
  • VBA,如果字符串包含某个字母

    我通常不与VBA我无法弄清楚这一点 我试图确定电子表格上的字符串中是否包含某个字母 Private Sub CommandButton1 Click Dim myString As String RowCount WorksheetFunc
  • 为什么 Chrome 无法检查 Docker 容器中的 NodeJS 代码?

    我尝试在 Docker 容器内启动简单的 NodeJS 服务器并使用 chrome inspect 或 WebStorm 对其进行调试 调试端口9229已绑定但检查不起作用 另一方面 当我在没有 docker 的情况下运行相同的代码时 我可
  • 使用 jsPDF rtl 支持将 Html 转为 pdf

    我正在尝试使用 Angular 5 将 html 转换为 pdf这是我的代码 import as jsPDF from jspdf htmlToPdf var doc new jsPDF var specialElementHandlers
  • 从多对多关系续集中选择

    我尝试从一个表中选择并引用另一个表 我在餐桌食品和餐桌配料之间存在多对多的关系 食品型号 module exports function sequelize DataTypes return sequelize define food id
  • 多次读取 Option<&mut T> 的引用

    我有一个Option lt mut T gt 并且想要多次访问包含的引用 如下所示 fn f a Option lt mut i32 gt if let Some x a x 6 if let Some x a x 7 fn main le
  • 如何使用PDF.JS显示整个PDF(不仅仅是一页)?

    我创建了这个演示 http polishwords com pl dev pdfjs test html http polishwords com pl dev pdfjs test html 它显示一页 我想显示所有页面 一个在另一个下
  • 长时间运行的 Android“服务”

    我有一个 Android 应用程序 其中 活动 会触发在后台运行的长时间运行的操作 这些操作完成后与活动交互 我正在开发一个处理活动 长时间运行任务耦合的组件 负责销毁和重新创建活动 现在该组件已作为 Android 服务实现 活动调用bi
  • 字谜索引计算[重复]

    这个问题在这里已经有答案了 给定一个由字符 A Z 组成的最长 25 个字符的输入字符串 输出其在输入字符串所有可能的字谜词按字母顺序排序的列表中的索引 输入字符串不区分大小写 输入的字符可以重复 该应用程序必须在 500 毫秒内完成 并且