【发布时间】:2015-11-26 07:48:51
【问题描述】:
我有 2 个代表树的字符串。每个“{”都意味着要在树中的较低级别(孩子)。 每个字符串包含一个或多个除以“{”的字母(或单词)。 我只想转换相同级别的字母 - 第二个(或第一个)字符串与另一个字符串中的字母顺序相同,而不更改字符串中的位置。 示例如下:
> str1<-"{a{b}{c{{d}{e}}}}"
> str2<-"{a{c}{b{{e}{d}}}}"
我想将 str2 更改为“{a{b}{c{d{e}}}}”。由于 'b' 和 'c' 都处于同一级别(str1 和 str2 中的 'a' 的孩子),它们仅在 str1 和 str2 中的顺序不同。 'd' 和 'e' 也是如此。我想将它们在 str2 中更改为 str2
> str1<-"{a{b}{c{{d}{e}}}}"
> str2<-"{a{b}{c{{d}{e}}}}"
这对我来说是解决这个问题的一个很好的中间解决方案。 命令 sort (x) 用于向量。我想使用字符串并保留'{'的位置。这意味着我们只能对相同级别的节点(兄弟姐妹)进行排序,但不能在更高级别之间进行排序。比如下面这种情况:
> str1<-"{a{b}{c}}"
> str2<-"{b{a}{c}}"
因为 'a' 是根,而 'b' 是他的孩子,反之亦然,对于 str2,我们无法对这种情况进行排序。我们可以在以下情况下进行排序:
> str1<-"{a{b}{c}}"
> str2<-"{a{c}{b}}"
因为在上面的例子中,{a} 是根,而 {b} 和 {c} 是 {a} 的同等级别的孩子。
【问题讨论】:
-
你的符号是否有额外的大括号为你去的每一级?这就是为什么
str1<-"{a{b}{c{{d}{e}}}}"而不是str1<-"{a{b}{c{d}{e}}" -
C8H10N4O2,感谢您的评论。是的,每个级别都由其更高级别用 { 分隔。如果 'a' 是根并且有 2 个孩子 b,它将如下所示:{a{b}{c}}。如果 'b' 有额外的孩子,让我们说 'd' 和 'e' 它将如下所示:{a{b {d} {e} } {c}}。 {b} 和 {c} 是兄弟姐妹(同一级别)。此外,{d} 和 {e} 是兄弟姐妹(同一级别)。
-
有趣的问题。您是否尝试将这些树存储在字符串以外的数据类型中?例如,列表?
-
C8H10N4O2 谢谢!这就是为什么我需要你的帮助:)。我想使用向量,因为它们的顺序功能。但是,由于兄弟姐妹的限制,它没有帮助。