对于我正在编写的程序,我需要使用递归来反转字符串 使用这个函数我写道。
它颠倒了字符串" ABCDEFGHI"和" noob"成功但未能在" 01234567"它只是返回" 01234567"不是" 7654321"。
有任何帮助,
bool IsPalendromic(string s,out string r)
{
var t = pal(s, s[s.Length - 1], s[0], 0);
r = t;
if (t == s) return true;
return false;
}
string pal(string s, char newfirst, char newlast, int epoch)
{
var r = s.ToArray();
r[0]=newfirst;
epoch++;
r[r.Length-1] = newlast;
if (epoch == r.Length - 1) return new string(r);
return pal(new string(r), r[r.Length - 1], r[0], epoch);
return "xxx";
}
答案 0 :(得分:1)
字符串可以递归反转,如下所示
char[] reverse(char[] str1, int index, int size)
{
char temp;
temp = str1[index];
str1[index] = str1[size - index];
str1[size - index] = temp;
if (index == size / 2)
{
return str1;
}
return reverse(str1, index + 1, size);
}
将方法称为
string str="0123";
char[] revchar= p.reverse(str.ToCharArray(), 0, str.Length - 1);
答案 1 :(得分:0)
如果pal()
的字符数为偶数,则string
仅交换string
的第一个和最后一个字母。
"ABCGEFGH" => "HBCDEFGA"
"ABCDEFGHI" => "ABCDEFGHI"
考虑将pal()
简化为:
static string pal(string s)
{
string reverse = "";
for (int i = s.Length - 1; i >=0; i--)
{
reverse += s[i];
}
return reverse;
}
pal()
的结果将是:
"ABCDEFGHI" => "IHGFEDCBA"
"ABCDEFGH" => "HGFEDCBA"
IsPalendromic()
可以保持不变。