Algorithm 如何使用Stack'组合两个字符串;什么是推送和弹出操作?
如果我有两个字符串,请说Algorithm 如何使用Stack'组合两个字符串;什么是推送和弹出操作?,algorithm,data-structures,Algorithm,Data Structures,如果我有两个字符串,请说str1和str2 str1 = I to cricket chess str2 = like play and 我希望输出为: “我喜欢打板球和下棋” 可以使用stack的push和pop操作来完成此操作。 算法应该独立于编程语言。上面提到的字符串可以 任何长度。根据你所给出的,你必须做出一些假设 假设: 句子中的单词在两个字符串之间交错 一个字符串最多比另一个字符串长一个单词 空格是单词的分隔符 算法如下所示: 对于每个字符串: 在空格字符上将字符串拆分为数组
str1和str2
str1 = I to cricket chess
str2 = like play and
我希望输出为:
“我喜欢打板球和下棋”
可以使用stack
的push
和pop
操作来完成此操作。
算法应该独立于编程语言。上面提到的字符串可以
任何长度。根据你所给出的,你必须做出一些假设 假设:
这很简单。您只需
将第一个单词从第一个字符串推送到堆栈中,然后将第一个单词从第二个字符串推送到堆栈中,然后对第二个单词执行相同的操作,然后再推到第三个单词等
之后,您需要从堆栈中弹出每个元素,并将其推送到第二个堆栈中,以反转序列。然后,您只需从第二个堆栈中弹出每个元素,并将其添加到结果字符串中。我认为这是一个比我的更好的解决方案,因为您不必维护两个单独的索引来递减,这可能容易出错。我打赌我的方法更节省时间和空间(没有第二个堆栈,也没有对堆栈进行双重遍历),但代价是更容易出错。是的,但是如果使用队列,而不是堆栈,则有可能省略第二个阶段。队列会使这变得微不足道。我认为整个想法是测试OP对后进先出的理解,同时处理解析句子的后进先出性质(即使它被分成两个字符串)。