将一个字符串更改为另一个字符串的简单突变数量?

2024-03-21

我相信你们都听说过“文字游戏”,在这种游戏中,您试图通过一次更改一个字母来将一个单词更改为另一个单词,并且只浏览有效的英语单词。我正在尝试实现一个 A* 算法来解决它(只是为了充实我对 A* 的理解),并且需要的东西之一是最小距离启发式。

也就是说,这三个突变之一可以将任意字符串 a 变成另一个字符串 b 的最小数量: 1)将一个字母改为另一个字母 2) 在任意字母之前或之后的某个位置添加一个字母 3)删除任何字母

Examples

aabca => abaca:
aabca
abca
abaca
= 2

abcdebf => bgabf:
abcdebf
bcdebf
bcdbf
bgdbf
bgabf
= 4

我尝试过很多算法;我似乎找不到一个每次都能给出实际答案的人。事实上,有时我不确定我的人类推理是否能找到最佳答案。

有谁知道用于此类目的的算法?或者也许可以帮我找到一个?

(为了澄清,我要求一种算法,可以将任何任意字符串转换为任何其他字符串,而不管它们的英语有效性。)


你想要的最小编辑距离(或编辑距离) http://en.wikipedia.org/wiki/Levenshtein_distance:

两个字符串之间的编辑距离定义为将一个字符串转换为另一个字符串所需的最小编辑次数,允许的编辑操作是插入、删除或替换单个字符。它以弗拉基米尔·莱文斯坦 (Vladimir Levenshtein) 的名字命名,他于 1965 年考虑了这个距离。

确定编辑顺序的一种算法位于同一页面上here http://en.wikipedia.org/wiki/Levenshtein_distance#Computing_Levenshtein_distance.

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

将一个字符串更改为另一个字符串的简单突变数量? 的相关文章

  • 基本 C++ 文本对齐

    我正在尝试编写一个程序 该程序从文件中获取输入行并使其恰好为 80 个字符 假设输入行始终小于 80 然后打印该行 这是通过在以下标点符号后添加最多两个空格来完成的 如果一行少于 41 个字符 则不加修改地打印 如果该行仍然不是 80 个字
  • Java 9 中紧凑字符串和压缩字符串的区别

    有什么优点紧凑的字符串 http openjdk java net jeps 254JDK9 中的压缩字符串 压缩字符串 Java 6 和紧凑字符串 Java 9 都有相同的动机 字符串通常实际上是 Latin 1 因此浪费了一半的空间 和
  • Python 给定 k 个分区的整数分区

    我正在尝试寻找或开发Python 的整数分区代码 仅供参考 整数分区将给定整数 n 表示为小于 n 的整数之和 例如 整数5可以表示为4 1 3 2 3 1 1 2 2 1 2 1 1 1 1 1 1 1 1 我为此找到了许多解决方案 ht
  • 32 位数字中 1 的数量

    我正在寻找一种在 32 位数字中包含 1 数量的方法 之间不使用循环 任何人都可以帮助我并向我提供代码或算法吗 这样做 提前致谢 See Integer bitCount int http java sun com javase 6 doc
  • 如何在给定目标索引数组的情况下对数组进行就地排序?

    你如何对给定的数组进行排序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
  • 编程 Pearls - 随机选择算法

    Programming Pearls 第一版第 120 页介绍了从 N 个整数总体中选择 M 个等概率随机元素的算法 InitToEmpty Size 0 While Size lt M do T RandInt 1 N if not Me
  • 如何释放字符串未使用的容量

    我正在程序中处理很多字符串 这些字符串数据在读入我的程序后的整个生命周期内都不会改变 但由于 C 字符串保留了容量 因此浪费了大量肯定不会被使用的空间 我尝试释放这些空间 但没有成功 以下是我尝试过的简单代码 string temp 123
  • 将嵌套字典中的所有键从camelCase转换为snake_case

    我有一本类似这样的字典 firstName abc lastName xyz favoriteMovies Star Wars The lone ranger favoriteCountries country China capitalC
  • 非法转义字符“\”

    我想在链接末尾获取名称 所以我这样做了 if invName substring j k equals copyf invName substring 0 j Eclipse 说字符串文字没有用双引号正确关闭 如何将字符串与此字符进行比较
  • 快速求解子集和

    考虑这种解决子集和问题的方法 def subset summing to zero activities subsets 0 for activity cost in activities iteritems old subsets sub
  • 删除字符串 C 的第一个字符

    我试图删除字符串的第一个字符并保留其余部分 我当前的代码无法编译 我对如何修复它感到困惑 My code char newStr char charBuffer int len strlen charBuffer int i 1 char
  • 高维最近邻搜索的最佳数据结构

    我实际上正在处理高维数据 50 000 100 000 个特征 并且必须对其执行最近邻搜索 我知道随着维度的增长 KD 树的性能很差 而且我还了解到 一般来说 所有空间分区数据结构都倾向于对高维数据执行详尽的搜索 此外 还有两个重要事实需要
  • 在 pandas 数据框中使用 Replace 和 str.startswith() 来重命名值

    我有一个名为 源 的列 其中包含数百行文本 问题是 其中一些可以组合在一起 而我正在努力在 Pandas 数据框中做到这一点 这是我的代码 df source replace df source str startswith share n
  • 每第 n 个字符分割一个字符串

    在 JavaScript 中 这就是我们如何在每 3 个字符处分割一个字符串 foobarspam match 1 3 g 我正在尝试弄清楚如何在 Java 中做到这一点 有什么指点吗 你可以这样做 String s 1234567890
  • strlen - 字符串的长度有时会增加 1

    我正在做一些 C 智力题 在大多数情况下 我能够找到正确的答案 但我遇到了问题 我通过使用编译器知道正确的答案 但我不知道原因 看一下代码 char c abc 012 0x34 什么会strlen c 返回 使用标准 C 编译器 我的编译
  • boost::algorithm::join 的一个很好的例子

    我最近想用提升 算法 加入 http www boost org doc libs 1 41 0 doc html string algo reference html header boost algorithm string join
  • 使用起始字符串和结束字符串从长字符串中提取子字符串?

    我有这个长字符串 它是一个长的连续字符串 Home address H NO 12 SECTOR 12 GAUTAM BUDH NAGAR NOIDA 121212 UTTAR PRADESH INDIA 911112121212 Last
  • 找到一系列间隔的最有效分组

    我有一个应用程序 其中有一系列不重叠的固定宽度间隔 每个间隔都有一个给定的键 每个间隔具有相同的宽度 并且可以存在连续的间隔 本质上 我想以最小化单独间隔的数量的方式对间隔和键进行分组 这可以通过合并具有相同键的连续间隔或查找匹配间隔并将它
  • 如何在 Ruby on Rails 中不使用 eval 将字符串转换为哈希值? [复制]

    这个问题在这里已经有答案了 这里是string需要转换成hash status gt label gt Status collection gt return misc definitions project status 我们不能使用ev
  • 解释一下从 N 个给定集合中的每一个中给出第 K 个最大数字的示例?

    今天我尝试解决一个Facebook 编程挑战赛 https facebook interviewstreet com recruit challenges 我遇到的挑战是 酒吧问题 可以找到here https github com alo

随机推荐

  • 表单提交前预览图像

    我的表单中有 ImageField 有没有办法在提交表单之前显示所选文件 也许在 jQuery 中可以实现 我读到我可以通过 request FILES 以某种方式访问 此文件 但我认为在提交表单之前它会是空的 试试这个 function
  • 在 ASP.NET Web API 中序列化继承类型

    我在 Web API 中序列化继承的对象时遇到问题 DataContract public class Item DataMember public int ID get set DataMember public string Name
  • CSS - 大于选择器 - 选择大于 N 的项目

    我有一些 p 我的 HTML 正文中的元素 我只想显示前两段 然后设置display none到之后的所有段落 为什么下面的代码不起作用 p p 1 p p 2 p p 3 p p 4 p 我的代码仍然在 Chrome 网络浏览器中显示所有
  • GUI 应用程序中的 Web 技术

    您在使用 Web 技术 HTML XML CSS JavaScript 实现 GUI 应用程序的部分功能方面有什么经验 优点和缺点 请说一下 没有服务器 关系数据库 AJAX 或用于会话管理的 cookie 也没有现有的 Web 应用程序
  • C 标准是否允许自修改代码?

    C 中的自修改代码是否可以以可移植的方式实现 我问的原因是 在某种程度上 OOP 依赖于自修改代码 因为在运行时执行的代码实际上是作为数据生成的 例如在 v 表中 但是 似乎如果这太过分了 它会阻止编译器中的大多数优化 例如 void ad
  • 三张牌排成一行,而不是所有牌排成一列

    我正在使用 React 和 Material UI 我在一个数组中有 40 张动态卡 当我渲染它们时 我想要连续 3 张卡 并将所有卡放在一列中 我正在使用这张卡 https codesandbox io s r084q99q34 http
  • 我可以在 OS X 中进行 Java 6 开发吗?

    我知道当 Leopard 推出时 每个人 嗯 每个 Java 开发人员并且足够关心在 Mac 上进行开发 都对没有 Java 6 SDK 支持感到愤怒 我知道有人在 Leopard 发布几个月后提供了某种破解方法 但我可以发誓 我稍后读到
  • 从我的数据框中创建虚拟变量矩阵;使用“NA”来查找缺失值

    我有一个基于不同年份的数据 重复了几次 我希望我的输出具有等于年数的列 每列代表一年 现在 目的是分别为每年创建虚拟变量 例如 只要主数据中存在与 2000 年平行的非 NA 观测值 2000 年的输出列就必须具有值 1 否则为 0 而且
  • 从 Firebase 通知恢复应用程序不起作用(Xamarin Forms)

    我正在努力整合Firebase 推送通知到我的应用程序 请找到我的火力基地Firebase消息服务 class 如果应用程序打开并运行 则一切正常 但是 如果应用程序未打开 如果我切换到其他应用程序 我的应用程序未关闭 我收到通知 但当我点
  • 帮助在 Rails 中构建模型

    class Profile has many projects through gt teamss has many teams foreign key gt member id has many own projects class na
  • Jenkins:动态作业创建引发“管道 CPS 方法不匹配”错误

    我正在尝试从应并行运行的管道作业之一创建多个动态作业 我希望我的詹金斯管道脚本根据用户输入下载并安装我的软件二进制文件 以下是我的示例阶段 第 1 阶段 将下载构建版本 第 2 阶段 获取参数并安装软件的 云 部分 第 3 阶段 将接受用户
  • Mongoose populate() 返回空数组

    所以我已经花了大约4个小时 阅读了几次文档 但仍然无法找出我的问题 我正在尝试对我的模型执行一个简单的 populate 我有一个用户模型和商店模型 用户有一个 favoriteStores 数组 其中包含商店的 id 我正在寻找的是这个数
  • SQL查询where参数为null不为null

    我正在尝试执行 SQL 查询并根据参数是否为空或否动态构建 where 条件 我有这样的事情 SELECT tblOrder ProdOrder tblOrder Customer FROM tblOrder CASE WHEN Order
  • 找不到模块“内部/错误”离子

    我正在尝试创建新的离子项目 然后它显示以下错误 我已经删除了nodejs npm ionic并再次重新安装 但再次出现相同的错误 Terminal https i stack imgur com vLP7J png Error Error
  • 使用 Ajax 加载用户控件

    我试图找到使用 Ajax 加载用户控件的最佳实践 我的第一种方法是简单地使用 UpdatePanel 并在 ajax 回发上使用 LoadControl 弹出它 但这会在同一 UpdatePanel 中重新呈现其他加载的用户控件 另外 我无
  • cassandra 节点限制

    我正在寻找 cassandra 是否有节点硬件规格的限制 例如如果存在任何此类限制 每个节点的最大存储可能是多少 我打算使用几个节点 每个节点具有 48TB 存储 2TB X 24 硬盘驱动器 7200rpm 并配有一些良好的双 Xeon
  • SMTP 验证错误“发送邮件失败”

    如果满足某些条件 我将尝试从我的 ASP NET 网页发送电子邮件 这是我的代码 SmtpClient smtpClient new SmtpClient NetworkCredential basicCredential new Netw
  • 如何找到 Homebrew 的可安装软件包列表?

    最近我安装了Brew https brew sh 如何检索要安装的可用brew 软件包的列表 brew help将显示可用命令的列表 brew list将显示已安装软件包的列表 您还可以附加公式 例如brew list postgres会告
  • 当请求为 POST 时,在 Apigee HTTPTargetConnection 上调用 GET

    我需要调用使用 GET 的旧版 API 我的 API 代理使用 POST 我尝试使用AssignMessage
  • 将一个字符串更改为另一个字符串的简单突变数量?

    我相信你们都听说过 文字游戏 在这种游戏中 您试图通过一次更改一个字母来将一个单词更改为另一个单词 并且只浏览有效的英语单词 我正在尝试实现一个 A 算法来解决它 只是为了充实我对 A 的理解 并且需要的东西之一是最小距离启发式 也就是说