首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C中的字符串缩写字符序列

C中的字符串缩写字符序列
EN

Stack Overflow用户
提问于 2021-11-12 17:45:24
回答 1查看 41关注 0票数 0

我需要写一个函数,它接受像"abcdef“这样的字符串,并将其转换为"a-f",或将"589”转换为"5-9",我可以使用stdio.h和string.h中的哪些函数?

EN

回答 1

Stack Overflow用户

发布于 2021-11-12 18:12:41

您需要找到运行的开始和结束位置。如果您认为每个字符都是游程的一部分,那么这会更容易,所以您可能会运行长度为1或更长的游程。

当你找到一次跑步的终点时,你需要根据跑步的长度做不同的事情。

  • 运行长度= 1:打印运行的唯一字符。
  • 运行长度= 2:打印运行的两个字符。
  • 运行长度= 3:打印运行的第一个和最后一个字符,中间加一个破折号。

考虑到这一点,我们可以使用以下算法:

循环创建指向string.

  • While的第一个字符的指针。如果指向的字符不是NUL,则将指向的character.

  • Set将游程的长度打印为0。

  • pointer.

  • Increment,
  1. Break.

      1. 如果指向的字符是NUL,请将游程的长度保存

代码语言:javascript
复制
    1. If the pointed character isn't one more than the saved character, 
        1. Break.
代码语言:javascript
复制
1. If the length of the run is 2+, 
    1. If the length of the run is 3+, 
        1. Print a dash.
代码语言:javascript
复制
    1. Print the saved character.

  1. 打印换行符。

您应该在纸上运行上面的算法,并使用"4abcz35xy"作为输入。同时,跟踪变量的当前值(指针、游程长度和保存的字符)。

代码语言:javascript
复制
         +---+---+---+---+---+---+---+---+---+---+---+
         |'4'|'a'|'b'|'c'|'z'|'3'|'4'|'5'|'x'|'y'| 0 |
         +---+---+---+---+---+---+---+---+---+---+---+
           ^
Pointer    |
+-------+  |
|     -----+
+-------+

Run length
+-------+
|       |
+-------+

Saved character
+-------+
|       |
+-------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69947056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档