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

本文关键字:提取 唯一 字符 字符串 | 更新日期: 2023-09-27 18:06:43

我有一个字符串"aabbcccddeefddg",我想从中提取唯一的字符。结果集应该是"abcdefg"。

注意:我不想使用String。c#中的独特功能

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

不知道为什么不想使用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);
}

这个怎么样:

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;
}

查看下面的伪代码

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**
  }
}

或者将字符串拆分为字符数组。然后循环遍历。取字符串(带substring)的剩余部分(当前字母之后的所有内容)并使用string。替换以删除同一字母的其他引用。然后将结果与第一部分连接起来。对每个字母都这样做。

问题也解决了。

这有帮助吗?

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