题目描述:
将一个句子的单词逆序输出来:
输入:I am a boy!(用一个空格间隔这些单词)
输出:boy! a am I
=============================================================
对于这个问题,我们可以用递归来实现,如,当输入为I am a boy!的时候其等价于am a boy!先逆序,再输出单词I.因此,
using System;
namespace LilacFlower
{
class Program
{
/// <summary>
/// 将一个句子逆序输出
/// </summary>
/// <param name="data">需要逆序的句子</param>
/// <param name="start">开始的位置</param>
private static void Reverse(char[] data, int start)
{
if (start >= data.Length)
{
return;
}
// 找到第一个空格位置
var begin = start;
while (begin < data.Length && data[begin++] != ' ') ;
// 递归后面的句子
Reverse(data, begin);
//输出从start开始的单词
while (start < data.Length && data[start] != ' ')
{
Console.Write(data[start++]);
}
Console.Write(" ");
}
static void Main(string[] args)
{
Reverse("I am a boy!".ToCharArray(), 0);
}
}
}
运行结果:

该博客介绍了一道算法题目,要求将一个句子中的单词逆序输出。通过递归的方法,可以先逆序处理句子中的剩余部分,然后输出当前单词。例如,输入'I am a boy!',逆序输出应为'boy! a am I'。博客内容详细解释了这个过程。
171万+

被折叠的 条评论
为什么被折叠?



