有如下输入:若干个由大写英文字母构成的单词,以’,’号隔开。如“ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB”。 写一段程序,从输入中寻找由相同字符构成(重复字符出现次数也是一样)的单词组输出。
如以上输入,则输出:
第1组:ABCCD,CDCAB
第2组:CDA,DCA,ADC
http://blog.csdn.net/xianfajushi/article/details/11999309
string s = "ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB";
var query = s.Split(',').GroupBy(x => x.OrderBy(y => y));
foreach (var item in query)
Console.WriteLine(string.Join(",", item.ToArray()));
发个2.0的。。
string s = "ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB";
string[] arr = s.Split(',');
Hashtable ht = new Hashtable();
char[] carr;
string k = "";
foreach (string a in arr) {
carr = a.ToCharArray();
Array.Sort(carr);
k = new string(carr);
k = Regex.Replace(k, @"([A-Z])\1+", "$1", RegexOptions.Compiled);
if (ht.ContainsKey(k)) ht[k] = ht[k].ToString() + "," + a;
else ht[k] = a;
}
foreach (string v in ht.Values) Response.Write(v + "<br>");