如何使用Stack的push和pop操作组合两个字符串?

时间:2012-10-22 05:35:55

标签: algorithm data-structures

如果我有两个字符串说str1 & str2

str1 = I to cricket chess 

str2 = like play and 

我希望输出为:

“我喜欢打板球和国际象棋”

可以使用push的{​​{1}}和pop操作来完成此操作。 算法应该独立于编程语言。上面提到的字符串可以 任何长度。

2 个答案:

答案 0 :(得分:2)

很简单。你需要push从第一个字符串到堆栈的第一个字,然后push第二个字符串中的第一个字,然后对第二个字,然后再到第三个字等。

之后,您需要pop堆栈中的每个元素和push它到第二个堆栈,以反转序列。然后,您只需pop来自第二个堆栈的每个元素,并将其添加到结果字符串中。

答案 1 :(得分:1)

从你给出的,你必须做出一些假设。

假设:

  1. 句子中的单词在两个字符串之间交错
  2. 一个字符串最多只能比另一个字符串长一个字
  3. Space是单词的分隔符。
  4. 算法如下:

    1. 对于每个字符串:
    2. 将字符串拆分为空格字符
    3. 上的数组
    4. 查找长度最长的数组
    5. 从最长的数组开始(称为arrayB,另一个是arrayO)
    6. 从数组末尾开始,
    7. 将arrayB的元素推入堆栈,
    8. 将arrayO的元素推入堆栈,
    9. 重复操作,直到推送每个数组中的所有元素,在两个数组之间交替。
    10. 完成后,将堆栈弹出一个数组,
    11. 使用空格作为分隔符将数组加入字符串。