让我用一个例子更详细地解释我的问题。
给定一个字符串:
“谐音是在几个连续单词的开头重复相同的元音”
如果我们想将第四个单词 reiteration 移动到第二个单词的位置,字符串将变为:
“同音重复是几个连续单词开头的同一个元音”
给定一个C
原型如下的函数:
void move(char *s, int word_begin_ind, int word_end_ind, int target_begin_ind)
如何实现这个功能来完成这项工作?
在上面的例子中,word_begin_ind = 17, word_end_ind = 27, target_begin_ind = 10
这不是功课。其实是面试题。我有一个算法。基本思想是这样的:
(1) 使用word_begin_ind
and复制目标词word_end_ind
。
(2) from target_begin_ind
to word_begin_ind - 1
,将每个字符移动到正确的位置。例如,移动word_begin_ind-1
到“word_end_ind”、word_begin_ind-2
“word_end_ind-1”等等。
(3) 最后,将副本移动到正确的位置(从target_begin_ind开始)。
我希望每个人都能明白我在问什么。
您不需要使用 c 来完成这项工作。也欢迎 C++。
谁能帮我找到其他解决方案?