string - 字符串的前缀

标签 string theory prefix computation-theory

X is a prefix of a string y if there exists xz = y and x is a proper prefix if x is not equal to y.



只是想确保我正确理解了这个概念。

例如,如果有一个字符串 y = "abracadabra"是否意味着有很多可能的前缀?
因此,如果 x 是前缀,那么 x 可以等于“a”、“ab”、“abr”甚至“abracadabra”,但在这种情况下,当 x=y 时,它现在被称为不合适的前缀我认为。但是,我不太确定最后一部分 x=y 是否仍然可以被视为前缀?

A language is prefix-free if no member is a proper-prefix of another member.



再次,不确定我是否理解正确。
例如,如果有一个 language = "Hello, World! My name is Andrew",我认为它是无前缀的,因为每个成员的开头都不同。但是,如果我们有“你好,世界!你好吗?”这种语言不再是无前缀的,因为“H”是“Hello”和“How”的前缀。我的思维方式是正确的还是我误解了什么?

我正在阅读的书中没有给出示例,这似乎是一个简单的主题,所以我想这可能是我找不到更详细解释的原因。但无论如何,我只是想确保我没有误解任何事情。

我将不胜感激所有的答案。谢谢你。

最佳答案

是的,“abracadabra”是“abracadabra”的前缀,但不是一个正确的前缀——“a”、“ab”、“abr”、...、“abracadabr”是“abracadabra”的正确前缀。
您的语言示例有点令人困惑。通常,一种语言被定义为一组单词/字符串,但您只给出了一个大字符串作为语言示例。
因此,一种语言可能是集合 L1 = {"a", "b", "ab"}。
但是,这种语言不是无前缀的,因为“a”在 L1 中并且是“ab”的适当前缀,后者也在 L1 中。
语言 L2 = {"abra", "cada", "bra"} 是根据您给出的定义的无前缀语言示例:“abra”不是“cada”或“bra”的前缀, “cada”不是“abra”或“bra”的前缀,“bra”也不是“abra”或“cada”的前缀。

关于string - 字符串的前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34937067/

相关文章:

algorithm - 爬山算法的时间复杂度是多少?

java - Functor 和 Command 模式有什么区别?

java - 为什么函数式编程语言支持自动内存而不是命令式语言?

namespaces - 如何使 JAXB 解码器忽略前缀?

Python随机化字符串大小写的最快方法

java - Java中不带空格的字符串比较

从十六进制转换为普通字符并进行字符串操作?

c++ - 为枚举类型赋值

javascript - 为计算输出(货币)添加前缀

python - 递归拆分包含一组已定义前缀的字符串 - Python