След дистинкт и сорт, не трябва ли да присвоиш листа на други променливи?
palindromes = palindromes.Distinct().ToList();
Между другото, ето още един интересен метод за намиране на палиндроми. "Свил" съм го от StackOverflow:
http://pastebin.com/m3MUXER9
Колега аз оттам "свих" още по елегантно решение :)
Може и накрая, когато отпечаташ да го направиш така:
Console.WriteLine(string.Join(", ", palindroms.OrderBy(x=>x).Distinct()));
В този случай не е нужно да се добавя .ToLIst()
Това е моя код за Palindromes ... след малко мъчение разбрах, че не записвам крайния резултат никъде, а само го печатам.
Преди да направя запис в нов лист ми даваше 80/10 така е 100/100.
using System;
using System.Collections.Generic;
using System.Linq;
namespace Lab
{
class Program
{
static void Main(string[] args)
{
Palindrom();
}
public static void Palindrom()
{
List<string> words = Console.ReadLine().Split(new char[] { ' ' , ',' , '.' , '?', '!' }, StringSplitOptions.RemoveEmptyEntries).ToList();
//ToDo!
var newStr = "";
List<string> print = new List<string>();
//
foreach (var word in words)
{
for (int i = word.Length-1; i >= 0; i--)
{
newStr += word[i];
}
if (newStr == word)
{
print.Add(word);
newStr = "";
}
newStr = "";
}
print.Sort();
Console.WriteLine(string.Join(", ", print));
}
private static void Text_Filter()
{
List<string> words = Console.ReadLine().Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries).ToList();
string text = Console.ReadLine();
//
foreach (var word in words)
{
if (text.Contains(word))
{
text = text.Replace(word, new string('*', word.Length));
}
}
Console.WriteLine(text);
}
private static void Count_Substring()
{
string txt = Console.ReadLine().ToLower();
string word = Console.ReadLine().ToLower();
//
int index = txt.IndexOf(word);
var count = 0;
while (index != -1)
{
count++;
index = txt.IndexOf(word, index + 1);
}
Console.WriteLine(count);
}
private static void Reverse_String()
{
//Reverse string
string str = Console.ReadLine();
string str1 = "";
for (int i = str.Length - 1; i >= 0; i--)
{
str1 += str[i];
}
Console.WriteLine(str1);
}
}
}
И аз го докарах до 80 т., но един тест не минава. Мисля, че логиката е вярна. Разглеждайки коментарите се сетих вместо Sort() да използвам OrderBy i Distinct и така стана. Но не схванах каква е разликата. Ако някой се сеща, моля да разясни! Благодаря !
Така става, като не чете добре условието => ". Print only unique palindromes".
Премина и последния тест. Но не разбирам каква е разликата за крайния резултат между:
palindromes.Distinct();
palindromes.Sort();
и
palindromes = palindromes.Distinct().OrderBy(x => x).ToList();
С какъв вход да тествам, за да я видя?
Ами не знам как да го тестваш... Просто ако не присвоиш на друга променлива, няма резултат.... Някъде в паметта се извършва операцията, но новия стринг си остава неизползван... Нещо такова... Сори, ама нямам слободно време да чета и да се замислям :)