// 要求算一任意长度字符串中不同的字符以及它的个数。
//c#3.0
/***************第一种方法**********************/
var values = "abcdefgabc"
.GroupBy(c => c)
.Select(g => String.Format("{0}, {1}", g.Key, g.Count()))
.ToArray();
Array.ForEach(values, Console.WriteLine);
/***************第二种方法**********************/
"abcdefgabc"
.GroupBy(c => c).ToList()
.ForEach(g => Console.WriteLine(g.Key + ", " + g.Count()));
/***************第三种方法**********************/
var text = "abcdefgabc";
var result = from c in text group c by c into g select g;
foreach (var g in result)
Console.WriteLine(g.Key + "," + g.Count());
-
//把一段字符串用“右起竖排”的古文格式输出。
Print("床前明月光疑似地上霜举头望明月低头思故乡", 5);
/***************第一种方法**********************/
-
static void Print(string text, int offset)
{
for (var j = 0; j < offset; j++)
{
for (var i = text.Length - offset + j; i >= 0; i -= offset)
{
Console.Write(text[i] + "|");
}
Console.WriteLine();
}
}
-
/***************第二种方法**********************/
static void Print(IEnumerable<char> text, int offset)
{
var matrix = text
.Select((c, i) => new { Char = c, Index = i })
.GroupBy(c => c.Index % offset, c => c.Char.ToString());
Array.ForEach(
matrix.ToArray(),
a => Console.WriteLine(String.Join("|", a.Reverse().ToArray())));
}
/***************第三种方法**********************/
static void Print(IEnumerable<char> text, int offset)
{
text
.Select((c, i) => new { Char = c, Index = i })
.GroupBy(c => c.Index % offset, c => c.Char.ToString()).ToList()
.ForEach(g => Console.WriteLine(string.Join("|", g.Reverse().ToArray())));
}