二楼的方法是适用于连续两组相同的,下面的方法适用于,只要存在相同的,就记录:
string s = "hello hello ttt vt vt mmw mmw mmw";
Dictionary
foreach (string keyword in s.Split(' '))
{
if (dic_Keywords.ContainsKey(keyword)) //如果已经存在,个数加一
dic_Keywords[keyword] += 1;
else //不存在,添加此记录
dic_Keywords.Add(keyword, 1);
}
StringBuilder sb = new StringBuilder();
foreach (string key in dic_Keywords.Keys)
sb.Append((dic_Keywords[key] == 1 ? key : (key + "*" + dic_Keywords[key])) + " ");
Console.WriteLine(sb.ToString().Trim());
Dictionary
string s = "hello hello ttt vt vt mmw mmw mmw";
string[] words = s.Split(' ');
string lastWord = words[0];
groupWord.Add(lastWord, 1);
int currentWordIndex = 1;
while (currentWordIndex < words.Length)
{
if (lastWord.Equals(words[currentWordIndex]))
{
groupWord[lastWord]++;
}
else
{
lastWord = words[currentWordIndex];
groupWord.Add(lastWord, 1);
}
currentWordIndex++;
}
string result = string.Empty;
foreach (var kp in groupWord)
{
result += kp.Key + (kp.Value > 1 ? "*" + kp.Value.ToString() + " " : " ");
}
Console.Write(result); //这里输出结果,就是 result
Console.Read();
声明一个变量 curr 表示当前单词
count 表示单词个数=1
声明一个string newStr表示新的字符串
好像c#里string有个split方法 根据空格把每个单词分出来
循环标记比较当前字符串 若相同则累加count 同时拼接newStr
没装vs就不上代码了...不过思想应该没问题