反转字符串函数反转 "ABC" (returns CBA) 但不反转 "012", returns "012"
Revese string function reverses "ABC" (returns CBA) but not "012", returns "012"
我写的一个程序,需要用递归来反转一个字符串
使用我写的这个函数。
它成功地反转了字符串 "ABCDEFGHI" 和 "noob" 但在“01234567”处失败了它只是 returns “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";
}
字符串可以递归反转如下
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);
如果 string
的字符数为偶数,您的 pal()
只会交换 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()
可以保持不变。
我写的一个程序,需要用递归来反转一个字符串 使用我写的这个函数。
它成功地反转了字符串 "ABCDEFGHI" 和 "noob" 但在“01234567”处失败了它只是 returns “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";
}
字符串可以递归反转如下
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);
如果 string
的字符数为偶数,您的 pal()
只会交换 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()
可以保持不变。