2 pengbelial pengBelial 于 2014.11.25 11:30 提问

程序設計題 字符比較 字符中出現的字母相同
c#

有如下输入:若干个由大写英文字母构成的单词,以’,’号隔开。如“ABCCD,CDA,BCDD,DCA,ADC,BCD,CDCAB”。 写一段程序,从输入中寻找由相同字符构成(重复字符出现次数也是一样)的单词组输出。
如以上输入,则输出:
第1组:ABCCD,CDCAB
第2组:CDA,DCA,ADC

3个回答

xianfajushi
xianfajushi   2014.11.26 15:18
已采纳
caozhy
caozhy   Ds   Rxr 2014.11.25 11:49

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()));

caozhy
caozhy 回复pengBelial: 运行下再下结论
大约 3 年之前 回复
pengBelial
pengBelial 感覺 這段代碼與題意完全不符合啊....
大约 3 年之前 回复
showbo
showbo   Ds   Rxr 2014.11.25 12:05

发个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>");
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!