如何在C中压缩字符串的元素
我需要一些帮助。我有一个程序,它将元素存储在字符串中,如下所示:如何在C中压缩字符串的元素,c,arrays,string,C,Arrays,String,我需要一些帮助。我有一个程序,它将元素存储在字符串中,如下所示: “D,C,D,C,D,C,C,D,C,C,C,C,D,C” 我想压缩这些元素并将其打印到sreen,如下所示: (DC)3C(CDC)2 其中(DC)3表示程序压缩了字符串“dcdc”,这意味着DC将重复3次,并且知道()中的每组元素最多只能有3个元素 到目前为止,我只拥有与相同类型的紧凑元素 “dddcc” 进入: D3CDC2 我们将非常感谢您的任何帮助。让我们来探讨一下您正在尝试用一项更简单的任务做什么。在以下字符串中折叠D
“D,C,D,C,D,C,C,D,C,C,C,C,D,C”
我想压缩这些元素并将其打印到sreen,如下所示:
(DC)3C(CDC)2
其中(DC)3表示程序压缩了字符串“dcdc”,这意味着DC将重复3次,并且知道()中的每组元素最多只能有3个元素
到目前为止,我只拥有与相同类型的紧凑元素
“dddcc”
进入:
D3CDC2
我们将非常感谢您的任何帮助。让我们来探讨一下您正在尝试用一项更简单的任务做什么。在以下字符串中折叠
DC
或CDC
的任何实例:
[D,C,D,C,D,C,C,C,D,C,C,D,C]
由于DC
出现在CDC
中,因此我们应该首先执行较长的字符串。从第一个字符开始,请参见模式的位置CDC
开始:
DCDCDCCCDCCDC
^ ^ ^
折叠其中每一项会导致:
D(CDCx1)DCC(CDCx2)
DCDCDCCCDCCDC
^ ^ ^ ^ ^
现在,检查DC
:
D(CDCx1)(DCx1)C(CDCx2)
哦!这并没有导致您的示例输出!如果我们按另一个顺序搜索呢?标记每个DC
会导致:
D(CDCx1)DCC(CDCx2)
DCDCDCCCDCCDC
^ ^ ^ ^ ^
可分为:
(DCx3)CC(DCx1)C(DCx1)
嗯,这也不会导致你的输出
所以,如果我们尝试不同的策略。。。让我们从头开始,尽可能快地匹配任何模式:
DCDCDCCCDCCDC
^
我们能比得上CDC吗?不,华盛顿怎么样?对!
(DCx1)DCDCCCDCCDC
^
从第一次更换后开始,我们进行相同的测试。疾病控制中心?不,华盛顿?对!
(DCx2)DCCCDCCDC
^
(DCx3)CCDCCDC
^
再说一次:疾病预防控制中心?不,华盛顿?对!
(DCx2)DCCCDCCDC
^
(DCx3)CCDCCDC
^
疾病控制中心?不,华盛顿?否。跳到下一个字符
(DCx3)CCDCCDC
^
疾病控制中心?对!
(DCx3)C(CDCx1)CDC
^
(DCx3)C(CDCx2)
^
疾病控制中心?对!
(DCx3)C(CDCx1)CDC
^
(DCx3)C(CDCx2)
^
我们已经到达了文本的末尾,而且,输出与预期值匹配。因此,要将其扩展到完整的算法,您需要完整的可能子集列表:CCC、CCD、CDC、CDD、DCC、DCD、DDC、DDD、CC、CD等
祝你好运 请试着解释一下你是如何从第一段到第二段的。它不必在代码中,但现在,您正在显示原始字符串中未包含的诸如“3C”和“2”之类的内容。这些数字是从哪里来的?@evanmcdonnal我想是(模式1)x3,C,(模式2)X2我想他可能正在尝试执行一种基本形式的run-legnth编码。@AK4749是的,一个可怜的人的正则表达式。谢谢@Bill,这可能会有帮助,我必须涵盖所有的可能性,但它会带来正确的解决方案。谢谢你的理解。