J’ai un code comme
Ssortingng code="AABBDDCCRRFF";
Dans ce code, je veux ne retenir que des caractères distincts
La sortie devrait être comme:
ANS: ABDCRF
ssortingng code = "AABBDDCCRRFF"; ssortingng answer = new Ssortingng(code.Distinct().ToArray());
Linq’s Distinct renvoie des éléments distincts d’une séquence. Lorsque la classe Ssortingng
implémente IEnumerable
, Distinct
dans ce contexte renvoie un IEnumerable
contenant tous les caractères uniques de la chaîne.
code.Distinct();
Voici une approche qui fournit la chaîne et un nombre de caractères distincts …
using System; using System.Collections.Generic; namespace SsortingngDict { class Program { static IDictionary charDict =new Dictionary(); static private ssortingng _charStr = "s;ldfjgsl;dkkjfg;lsdkfjg;lsdkfjg;lsdkfjg;lsdkfj"; private static int _outInt=0; static void Main(ssortingng[] args) { foreach (var ch in _charStr) { if (!charDict.TryGetValue(ch,out _outInt)) { charDict.Add(new KeyValuePair(ch,1)); } else { charDict[ch]++; } } Console.Write("Unique Characters: "); Console.WriteLine('\n'); foreach (var kvp in charDict) { Console.Write(kvp.Key); } Console.WriteLine('\n'); foreach (var kvp in charDict) { Console.WriteLine("Char: "+kvp.Key+" Count: "+kvp.Value); } Console.ReadLine(); } } }
Sortie…
Unique Characters: s;ldfjgk Char: s Count: 6 Char: ; Count: 6 Char: l Count: 6 Char: d Count: 6 Char: f Count: 6 Char: j Count: 6 Char: g Count: 5 Char: k Count: 6
Option alternative utilisant le code compatible dotNet 2.0:
public ssortingng RemoveDuplicateChars(ssortingng input) { var ssortingngBuilder = new SsortingngBuilder(input); foreach (char c in input) { ssortingngBuilder.Replace(c.ToSsortingng(), ssortingng.Empty) .Append(c.ToSsortingng()); } return ssortingngBuilder.ToSsortingng(); }
Que diriez-vous de linq:
var str = "AABBCCDDDDDDEEEEEFFF"; var unique = str.ToCharArray().Distinct(); Console.WriteLine("Answer: {0}.", ssortingng.Join(ssortingng.Empty, unique));
Vous pouvez le faire comme suit
var s = "AABBDDCCRRFF"; var result = s.Distinct(); var distinct = result.Aggregate(ssortingng.Empty, (current, c) => current + c.ToSsortingng()); Console.WriteLine(distinct);
Juste pour le plaisir – en utilisant un SsortingngBuilder
ssortingng code = "AABBDDCCRRFF"; SsortingngBuilder sb = new SsortingngBuilder(); code.Distinct().ToList().ForEach(c => sb.Append(c)); MessageBox.Show(sb.ToSsortingng());