C# 如何重构代码以返回isAlindrome
使用模拟c#问题 我已经编码了C# 如何重构代码以返回isAlindrome,c#,C#,使用模拟c#问题 我已经编码了 using System; public class Palindrome { public static bool IsPalindrome(string word) { string testWord = word; string first = word[0].ToString(); string last = word[word.Length - 1].ToS
using System;
public class Palindrome
{
public static bool IsPalindrome(string word)
{
string testWord = word;
string first = word[0].ToString();
string last = word[word.Length - 1].ToString();
bool isPal = false;
while (testWord.Length > 1)
{
Console.WriteLine(testWord);
if (first.ToLower() == last.ToLower())
{
testWord = testWord.Remove(0,1);
testWord = testWord.Remove(testWord.Length - 1);
isPal = true;
}
}
return isPal;
}
public static void Main(string[] args)
{
Console.WriteLine(Palindrome.IsPalindrome("Deleveled"));
}
}
此代码正在运行,但我无法使用它
小写文字:超出时间限制
各种文字:超过时限
我可以做哪些更改来重构代码以加快工作速度?如果发现不匹配,可以立即返回。如果发现不匹配,可以立即返回。无需编写多行代码,可以在一行中检查回文 林克的魔力
bool isPalindrome = str.SequenceEqual(str.Reverse());
若要忽略大小写,请将原始字符串和反向字符串转换为小写,然后检查其顺序
string str = "Madam";
var strReverse = str.ToLower().Reverse();
var isPalindrome = str.ToLower().SequenceEqual(strReverse);
基本上,回文检查是一种实际字符串等于其反面的检查。当我们检查原始字符串以反转字符串时,我们不需要移动到末尾。我们只需要核对第一个字母和最后一个字母,依此类推 这是非Linq回文检查
public static bool IsPalindrome(string word)
{
string testWord = word;
for(int i = 0; i < word.Length/2; i++)
{
if(char.ToLower(testWord[i]) != char.ToLower(testWord[testWord.Length - i - 1]))
return false;
}
return true;
}
公共静态bool IsPalindrome(字符串字)
{
字符串testWord=word;
for(int i=0;i
POC:无需编写多行代码,您可以在一行中检查回文 林克的魔力
bool isPalindrome = str.SequenceEqual(str.Reverse());
若要忽略大小写,请将原始字符串和反向字符串转换为小写,然后检查其顺序
string str = "Madam";
var strReverse = str.ToLower().Reverse();
var isPalindrome = str.ToLower().SequenceEqual(strReverse);
基本上,回文检查是一种实际字符串等于其反面的检查。当我们检查原始字符串以反转字符串时,我们不需要移动到末尾。我们只需要核对第一个字母和最后一个字母,依此类推 这是非Linq回文检查
public static bool IsPalindrome(string word)
{
string testWord = word;
for(int i = 0; i < word.Length/2; i++)
{
if(char.ToLower(testWord[i]) != char.ToLower(testWord[testWord.Length - i - 1]))
return false;
}
return true;
}
公共静态bool IsPalindrome(字符串字)
{
字符串testWord=word;
for(int i=0;i
Po:
刚刚从我的头顶开始(也许不适合这里),但不妨考虑一下,测试<代码> ToLower(结果)< /C> >匹配<代码> ToLower(输入)< /代码>。例如5行代码,没有循环。如果第一个字符和最后一个字符不相等,则永远循环。。添加否则返回false如果
的话,你的问题不是性能而是正确性。谢谢大家的帮助。如果你想要分数,我会选择@JNevill。加上答案,我会打勾it@John请注意,toupper不变量
。(.)但最终,如果您同意/允许分配另一个反向字符串,那么您应该使用string.Equals(s1,s2,StringComparison.ordinallingorecase)
将其与原始字符串进行比较,而不是将两个字符串都转换为小写或大写。就在我的头顶上(可能不适合这里)但是不妨考虑一下,测试<代码> ToLower(结果)< /C> >匹配<代码> ToLower(输入)< /C>。例如5行代码,没有循环。如果第一个字符和最后一个字符不相等,则永远循环。。添加否则返回false如果
的话,你的问题不是性能而是正确性。谢谢大家的帮助。如果你想要分数,我会选择@JNevill。加上答案,我会打勾it@John请注意,toupper不变量
。(.)但最终,如果您同意/允许分配另一个反向字符串,则应使用string.Equals(s1、s2、StringComparison.OrdinalIgnoreCase)将其与原始字符串进行比较
而不是将两个字符串都转换为小写或大写。感谢回复,但它不允许在此模拟中使用linq感谢回复,但它不允许在此模拟中使用linq