Я приехал из C фона и недавно начал писать на C #, поэтому, пожалуйста, не возражайте, если мой вопрос кажется несколько базовым.По сути, я хочу написать функцию, которая будет возвращать истину, если строка имеет палиндром, и ложь, если нет.
Строка может содержать символы, такие как пробел, ',', ':', которые я должен игнорировать.Я написал код как показано ниже
static bool IsPalindrome(string s)
{
s = s.Replace(" ", "");
s = s.Replace(",", "");
s = s.Replace(":", "");
int j = s.Length - 1;
for(int i = 0; i < s.Length/2; i++)
{
if(s[i].ToString().Equals(s[j].ToString(),StringComparison.InvariantCultureIgnoreCase))
{
j--;
}
else
{
return false;
}
}
return true;
}
, где функция будет вызываться со следующей строкой
string s = "A man, a plan, a canal: Panama";
Я прочитал в документации, что в C # строка неизменна, поэтому каждый разя делаю операцию, такую как replace или ToString, создается новая копия.
Так что я хотел проверить, что я).Этот код эффективен?II).Если нет, то как сделать его более эффективным.