我必须向后重新排列一个句子中的单词,但我只能为第一个字母执行此操作。例如:有趣的考试权利。到目前为止我有什么:
var sentance = Console.Readline().Split(' ');
var rearrangedSentence = new StringBuilder();
for(int i = 0,i<sentance.Lenght,i++)
{
rearrangedSentence.Append(sentance[i].Last());//this gives me "nmt"
}
我的问题是如何在没有任何东西的情况下让这个循环重复。 任何帮助都将受到极大关注:)
编辑:问题是
我的意思是,如果我有句子&#34;有趣的考试权利&#34;结果应该是:nmtuahFxgeir。我们首先采用每个单词追加的最后一个字符,结果是&#34; nmt&#34;然后拿下一个并添加它们,得到&#34; nmtuah&#34;等等
答案 0 :(得分:1)
当您使用sentance[i].Last()
时,您只是拾取数组的最后一个元素。
编辑:根据您更新的要求,您可以使用此代码。
//Get the sentence array
var sentence = Console.ReadLine().Split(' ');
var rearrangedSentence = new StringBuilder();
//Get the length of longest word in array
int loopLength = sentence.OrderBy(n => n.Length).Last().Length;
int x = 0;
// Run for the length of longest word
for (int i = loopLength-1; i >=0 ; i--)
{
// need to pick up an element at every run for each element.
for (var j = 0; j < sentence.Length; j++)
{
//Picking the position of item to be picked up
int val = sentence[j].Length - (x + 1);
// If index not out of bounds
if(val >= 0 && val <= sentence[j].Length)
{
// Pick the character and append to stringbuilder.
rearrangedSentence.Append(sentence[j][val]);
}
}
// Next letter should be n-1, then n-2.
// Increase this. Val will decrease
x++;
}
Console.WriteLine(rearrangedSentence.ToString());
Console.ReadLine();