4

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

str1 = I to cricket chess 

str2 = like play and 

我希望输出为:

“我喜欢打板球和下棋”

这可以使用pushpop的操作来完成吗stack?算法应该独立于编程语言。上面提到的字符串可以是任意长度。

4

2 回答 2

2

这很简单。您只需要将push第一个字符串中的第push一个单词放入堆栈,然后将第二个字符串中的第一个单词放入,然后对第二个单词执行相同操作,然后对第三个单词执行相同操作,等等。

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

于 2012-10-22T05:48:06.093 回答
1

根据您给出的信息,您必须做出一些假设。

假设:

  1. 句子中的单词在两个字符串之间交错
  2. 一个字符串最多比另一个字符串长一个单词
  3. 空格是单词的分隔符。

该算法将是这样的:

  1. 对于每个字符串:
  2. 在空格字符上将字符串拆分为一个数组
  3. 找到长度最长的数组
  4. 从最长长度的数组开始(调用这个arrayB,另一个arrayO)
  5. 从数组的末尾,
  6. 将 arrayB 的元素压入堆栈,
  7. 将 arrayO 的元素压入堆栈,
  8. 重复直到每个数组中的所有元素都被推送,在两个数组之间交替。
  9. 完成后,将堆栈弹出到数组中,
  10. 将数组连接成一个字符串,使用空格作为分隔符。
于 2012-10-22T05:46:19.153 回答