我有一个字符串,“aabbcccddeefddg”,我想从中提取独特的字符。结果集应为“abcdefg”。
注意:我不想在C#中使用String.Distinct函数。
答案 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());