问题标签 [string-algorithm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
328 浏览

python - Python:更具可读性的列表理解

我是 Python 新手。我有以下代码,它是我目前正在开发的字符串算法的一部分。

我喜欢使用列表推导来做到这一点,因为我读过它是性能优化的。有人可以建议我一个方法。

谢谢你。

[编辑]

例子:

所以新的名单,

0 投票
1 回答
250 浏览

suffix-array - 后缀阵列的 LCP 阵列

如何计算后缀数组的 LCP 数组?它不一定是最有效的。O(n log n) 或 O(n) 都可以。如果可能的话,一些相对容易编码的东西。

0 投票
5 回答
5558 浏览

c - 如何计算单引号或双引号

我的问题是能够计算c中字符串中单引号或双引号的数量。例子

用户输入字符串,我通过gets()函数获取,然后我需要这个计数器来进一步分析字符串。

例如,当我必须在我的字符串中计算 '|' 时,这会更容易

所以我的功能很简单:

但是现在我必须分析引号,我不知道该为 if(condition) 写什么

0 投票
4 回答
2807 浏览

string - 从字符串中删除所有出现的子字符串

给定一个字符串S和一组n子字符串。n从中删除这些子字符串的每个实例,S使其S具有最小长度并输出此最小长度。

示例 1

输出

解释:

示例 2

输出

我该如何解决这个问题?

0 投票
1 回答
880 浏览

algorithm - 在另一个序列中找到最相似的子序列

我需要编写一个算法,在 N log(N) 中找到 S1 中与另一个字符串 S2 最相似的子字符串(S1 中与 S2 具有最小汉明距离的子字符串,换句话说),其中 N = len(S1) +长度(S2),长度(S2)<=长度(S1)。

例如:
S1 = AGTCAGTC
S2 = GTC
答案:GTC(距离 0)

S1 = AAGGTTCC
S2 = TCAA
答案:TTCC(距离 3)

时间复杂度不得超过 O(N Log(N))。空间复杂度无关紧要。

LCS(最长公共子序列)在我的情况下不起作用。例如:

0 投票
0 回答
56 浏览

algorithm - 由 a,b,c 组成的最小缩减字符串

这是我问的一个面试问题。

输入字符串仅由ab组成c。您必须将字符串减少到可能的最小长度。减少标准是:

如果abba结合在一起,它可以被替换为c

如果bccb结合在一起,它可以被替换为a

如果acca结合在一起,它可以被替换为b

例如,

ab cb ca --> ab aca --> c ac a --> cba --> cc 或 aa

ab cbca --> c cb ca --> caca --> 同上

我什至想不出任何适当的逻辑。我开始考虑奇数和偶数位置的出现,但这没有帮助。请帮我建立一个逻辑

谢谢

0 投票
3 回答
1576 浏览

c - 在 C 中就地字符串替换

写一个函数

输入:
str: 以 . 结尾的字符串\0。输入表明我们需要一个就地算法。

pattern: 一封信。

replacement: 一个字符串。

mlen:内存的大小保存字符串str从内存的开头开始,mlen应该大于strlen(str)


最终结果仍由 指向str

请注意,应替换所有出现的模式。

例如,

helelo\0...........

这里的“helelo”是最后替换的字符串'\0'。之后'\0'还有 L 个有效字节。我们想用“123”替换“e”。

一个简单的方法是这样工作的,我们通过str,当一个模式匹配时,我们将所有其余部分与该位置一起移动以填充替换字符串,然后通过替换替换模式。

如果原始字符串有长度n并且只包含e,我们需要(n-1) + (n-2) + ... + 1移位。

是否有一种算法可以仅通过一次扫描和恒定的内存成本来扫描字符串?

0 投票
2 回答
233 浏览

algorithm - 在很长的文本中查找列表或单词列表的所有许可

给定单词列表 = { w1,w2,w3,w1,w2 }

在长文本中查找上述单词列表的所有排列。

长文本列表 = {这是长文本 w1 w2 w3 w4 和​​ w1 w2 w1 w2 w3。这是另一个没有排列的长文本,因为它不包含所有单词 w1,w2,w2,w2,w2 ,但这是由空格分隔的排列w2 w2 w3 w1 w1 }

解决这个问题的最有效算法是什么?

我认为首先为列表中的每个唯一单词分配一个元组(唯一#,唯一素数#){w1 = [101, 5],w2 = [103, 7],w3 = [205, 11]}并计算总和使用分配的元组的整个列表:w1 [101 * 5] + w2 [103 * 7] + w3 [205 * 11] + w1 [101 *5] + + w2 [103 * 7] = 4707

这是 pudo 代码:

}

有没有更好的逻辑或算法呢?

更新 :

我正在进一步阅读模式匹配 Z-Algorithm (Z-Boxes),但我无法看到 Z-boxes 或 Z-Array 如何使它变得更好,除非预先知道所有排列。不知道有没有更好的办法?

谢谢大家分享知识。

谢谢,

巴韦什

0 投票
4 回答
253 浏览

python - 将字符串拆分成组

我有一个这样的字符串Delete File/Folder。我需要根据/等价于or.

最后需要从中生成两个字符串,Delete File一个字符串和另一个字符串Delete Folder

我尝试了非常天真的方法,我检查索引,/然后用一堆条件形成字符串。

当我们有类似的字符串时,它有时会失败File/Folder Deleted


编辑:

如果您拆分,/那么对于案例 1,我们有Delete FileFolder。然后我将检查第一个字符串中是否存在空格,而存在的空格是第二个字符串。

空格数较少的将替换为第一个字符串最后一个元素。这变得越来越复杂。

0 投票
3 回答
136 浏览

python - 与函数 any 和“不止一次”关键字相关的 Python 编码

我有一段简单的代码,它告诉我给定列表中的单词是否出现在文章中:

我需要的是,如果“关键字”列表中至少有 3 个单词出现在文章中 - 如果没有,那么它应该跳过文章。

是否有捷径可寻?我似乎找不到任何东西。