我正在做这个算法练习,但我不完全理解公式。下面是练习:
给定一个string str和一对数组(该数组指示字符串中的哪些索引可以交换),返回通过执行允许的交换而产生的词典中最大的字符串。您可以交换任何次数的索引。
示例
对于str=“abdc”和pairs=[[1,4],[3,4]],输出应该是swapLexOrder(str,pairs)=“dbca”。
通过交换给定的索引,可以得到字符串:“cbda”、“cbad”、“dbac”、“dbca”。这个列表中最大的字符串是“dbca”。
输入/输出
“执行时限”4秒(js)
[input]字符串字符串
只由小写英文字母组成的字符串。
保证约束条件:1≤str.length≤104。
[input]array.array.integer对
一个数组,包含可以在str(基于1)中交换的索引对。这意味着对于每个pairs[i],您可以交换str中具有索引pairs[i][0]和pairs[i][1]的元素。
保证约束条件:0≤pairs.length≤5000,pairs[i].length=2.
[output]字符串
我的问题是,为什么“abcd”不是一个可能的答案(只是交换原始字符串“abdc”上的索引3和4)?这个例子说
通过交换给定的索引,可以得到字符串:“cbda”、“cbad”、“dbac”、“dbca”。此列表中按词典排列的最大字符串是“dbca”
我知道,即使“abcd”是一个可能的答案,“dbca”在词典上是最大的,所以答案是相同的。但如果我不明白为什么“ABCD”不是一个可能的答案,我想我是误解了任务
你在正确地读题,他们的描述被打破了。“abcd”
和“abdc”
都在您可以生成的可能字符串列表中,但不在它们的列表中。
你需要在这个练习中实现下面这三个哈希函数: FNV-1a 以创造者Glenn Fowler、Phong Vo 和 Landon Curt Noll的名字命名。这个算法产生合理的数值并且相当快。 Adler-32 以Mark Adler命名。一个比较糟糕的算法,但是由来已久并且适于学习。 DJB Hash 由Dan J. Bernstein (DJB)发明的哈希算法,但是难以找到这个算法的讨论。它非
我将想你介绍涉及到排序的两个算法,你可以用它们操作链表。我首先要警告你,如果你打算对数据排序,不要使用链表,它们对于排序十分麻烦,并且有更好的数据结构作为替代。我向你介绍这两种算法只是因为它们难以在链表上完成,并且让你思考如何高效操作它们。 为了编写这本书,我打算将算法放在两个不同的文件中,list_algos.h和list_algos.c,之后在list_algos_test.c中编写测试。现在
这个练习中,我会向你展示可能是最快的字符串搜索算法之一,并且将它与bstrlib.c中现有的binstr比较。binstr的文档说它仅仅使用了“暴力搜索”的字符串算法来寻找第一个实例。我所实现的函数使用Boyer-Moore-Horspool(BMH)算法,如果你分析理论时间的话,一般认为它会更快。你也会看到,如果我的实现没有任何缺陷,BMH的实际时间会比binstr简单的暴力搜索更糟。 这个练习
本文向大家介绍如何使用Tensorflow训练'Word2Vec'算法?,包括了如何使用Tensorflow训练'Word2Vec'算法?的使用技巧和注意事项,需要的朋友参考一下 Tensorflow是Google提供的一种机器学习框架。它是一个开放源代码框架,与Python结合使用以实现算法,深度学习应用程序等等。它用于研究和生产目的。它具有优化技术,可帮助快速执行复杂的数学运算。 这是因为它使
本文向大家介绍算法练习之从String.indexOf的模拟实现开始,包括了算法练习之从String.indexOf的模拟实现开始的使用技巧和注意事项,需要的朋友参考一下 String.indexOf的模拟实现,没想象中有多么高深的查找算法,就是最普通的遍历查找 思路:先找到第一个相同的字符,然后依次比较后面的字符,若都相等则表示查找成功 同样更常用的String.contains方法实际上就是调
这个挑战是创建一个简单的代数计算器,使用你所学到的关于解析的一切。你将需要设计一种语言,用于使用变量进行基本数学运算,为该语言创建 ABNF,并为其编写扫描器,解析器,分析器和解释器。这实际上对于简单的计算器语言可能是小题大做,因为不会有任何嵌套的结构,如函数,但是无论如何都要理解完整的过程。 挑战练习 简单的代数语言对于不同的人来说意思也不同,所以我希望你试试 Unix 命令bc。这是我运行bc