первый раз я пишу на SO, потому что он не мог найти решение самостоятельно. На собеседовании мне была дана задача написать метод, который проверяет символы в строке на уникальный.Проверьте строку на дубликат char
Требования:: не используется LINQ. Желаемое: не использовать дополнительные типы данных (словарь, HashSet ... и т.д. Массивы и списки Разрешенные.)
Пример:
"Hello" - return false; "Helo" - return true
Моя реализация:
static HashSet<char> charSet = new HashSet<char>();
static bool IsUniqueChar(string str)
{
foreach (char c in str)
{
charSet.Add(c);
}
return charSet.Count() == str.Length;
}
Но он не соответствует требованиям типов данных, и это не лучшая производительность ... Я также пробовал подходить со словарем:
static Dictionary<char,bool> charSetDictionary = new Dictionary<char,bool>();
static bool IsUniqueChar(string str)
{
try
{
foreach (char c in str)
{
charSetDictionary.Add(c,true);
}
}
catch
{
return false;
}
Но он не лучше предыдущего. Я буду приветствовать любую идею, как решить эту задачу лучше? пс
static void Main(string[] args)
{
Stopwatch sw = Stopwatch.StartNew();
IsUniqueChar("Hello");
sw.Stop();
Console.WriteLine("Elapsed={0}", sw.Elapsed); //~005044
}
вы проверить это http://stackoverflow.com/a/1343953/1880431 – meda
какие символы? Это только алфавиты? A == 'a' ..? –