给定一个字符串 S
,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例 1:
输入:"ab-cd" 输出:"dc-ba"
示例 2:
输入:"a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba"
示例 3:
输入:"Test1ng-Leet=code-Q!" 输出:"Qedo1ct-eeLg=ntse-T!"
分析:
这道题非常好,是栈的用武之地。
过滤掉不等于字母的。char.IsLetter()
栈、存入栈,现进后出,正合题意。
public static string ReverseOnlyLetters(string S)
{
Stack<char> cc = new Stack<char>();
char[] c = S.ToCharArray();
for (int i = 0; i < S.Length; i++)
{
if (char.IsLetter(S[i]))
{
cc.Push(S[i]);
}
}
for (var i = 0; i < c.Length; i++)
{
if (char.IsLetter(c[i]))
c[i]= cc.Pop();
}
return new string(c);
}
调用:
static void Main(string[] args)
{
int[] nums = { 6, 7, 8 };
string xa= ReverseOnlyLetters("dc-ba");
Console.Write(xa);
Console.ReadKey();
}