回答編集履歴
3
コードの修正
answer
CHANGED
@@ -16,22 +16,28 @@
|
|
16
16
|
list.Add("E:F");
|
17
17
|
list.Add("F:E");
|
18
18
|
|
19
|
+
var mergedList = list
|
20
|
+
.Where(x => x[2] - x[0] == 1)
|
21
|
+
.OrderBy(x => x)
|
22
|
+
.MergeByLastChar();
|
23
|
+
|
19
|
-
foreach(var element in
|
24
|
+
foreach(var element in mergedList){
|
20
|
-
Console.WriteLine(element);
|
25
|
+
Console.WriteLine(element); //{ "A:B:C:D", "E:F" }
|
21
26
|
}
|
22
27
|
}
|
23
28
|
}
|
24
29
|
|
25
30
|
public static class Extension{
|
26
|
-
public static IEnumerable<string>
|
31
|
+
public static IEnumerable<string> MergeByLastChar(this IEnumerable<string> list){
|
27
32
|
var merged = string.Empty;
|
28
|
-
foreach(var element in list
|
33
|
+
foreach(var element in list){
|
29
34
|
if(merged == string.Empty){
|
30
35
|
merged = element;
|
31
36
|
continue;
|
32
37
|
}
|
33
38
|
|
39
|
+
var lastChar = merged.Last();
|
34
|
-
if(element.StartsWith(
|
40
|
+
if(element.StartsWith(lastChar.ToString())){
|
35
41
|
merged += element.Substring(1);
|
36
42
|
continue;
|
37
43
|
}
|
2
文章の修正
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
解決した
|
1
|
+
解決したようですが、自己満足で私も書きました。
|
2
2
|
入力が`list`、出力が`”A:B:C:D" , "E:F"`の想定です。
|
3
3
|
|
4
4
|
`:`の左右にある文字のASCIIコードから差を求めて、`B:A`、`C:B`、`D:C`、`F:E`などの連結に使えない文字列は除外しています。
|
1
文章の修正
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
私も自己満足で書いてみました。
|
1
|
+
解決したいですが、私も自己満足で書いてみました。
|
2
2
|
入力が`list`、出力が`”A:B:C:D" , "E:F"`の想定です。
|
3
3
|
|
4
4
|
`:`の左右にある文字のASCIIコードから差を求めて、`B:A`、`C:B`、`D:C`、`F:E`などの連結に使えない文字列は除外しています。
|