如何从字符串中提取唯一字符?

时间:2011-08-24 12:10:00

标签: c#

我有一个字符串,“aabbcccddeefddg”,我想从中提取独特的字符。结果集应为“abcdefg”。

注意:我不想在C#中使用String.Distinct函数。

5 个答案:

答案 0 :(得分:4)

不确定为什么您不想使用Distinct,但这是使用HashSet<char>的解决方案:

HashSet<char> chars = new HashSet<char>();
string s = "aabbcccddeefddg";
foreach(char c in s)
{
    chars.Add(c);
}

foreach(char c in chars)
{
    Console.WriteLine(c);
}

答案 1 :(得分:3)

这个怎么样:

static string extract(string original)
        {
            List<char> characters = new List<char>();
            string unique = string.Empty;

            foreach (char letter in original.ToCharArray())
            {
                if (!characters.Contains(letter))
                {
                    characters.Add(letter);
                }
            }

            foreach (char letter in characters)
            {
                unique += letter;
            }

            return unique;
}

答案 2 :(得分:1)

查看下面的伪代码

initialize array index[256] to 0

for (i=0; i<length_of_string; i++)
{
  index[string[i]]++;
}

for (i=0; i<256; i++)
{
  if (index[i] > 0)
    print ascii of **i** 
}

<强>更新

以下循环将按照原始字符串中显示的顺序打印字符。

for (i=0; i<256; i++)
{
  if (index[i] > 0)
  {
    index[i] = 0
    print ascii of **i**
  }
}

答案 3 :(得分:0)

或者将字符串拆分为字符数组。然后循环它。取字符串的余数(当前字母后面的所有内容)(带子字符串)并使用String.Replace删除相同字母的其他引用。然后将结果与第一部分连接起来。为每封信都这样做。

问题也解决了。

这有帮助吗?

答案 4 :(得分:0)

string s = "AAABBBBBCCCCFFFFGGGGGDDDDJJJJJJ";

var newstr = String.Join("", s.Distinct());