我什至不知道从哪里开始,比如使用Linq中的哪些方法,但我有一个示例。
如果字符串是"xxyxxz"
的,这将是输出(尽管不一定按此顺序(:
x x y x x z xx xx xyx xxyxx
有没有人知道如何解决这个问题?
如果字符串不是很长,你可以尝试蛮力:枚举所有子字符串并过滤掉回文。让我们为此实现纯Linq:
using System.Linq;
...
string source = "xxyxxz";
var result = Enumerable
.Range(1, source.Length) // all substrings' lengths
.SelectMany(length => Enumerable // all substrings
.Range(0, source.Length - length + 1)
.Select(i => source.Substring(i, length)))
.Where(item => item.SequenceEqual(item.Reverse())) // Linq to test for palindrome
.ToArray(); // Let's have an array of required substrings
// Let's have a look at the result:
Console.Write(string.Join(" ", result));
结果:
x x y x x z xx xx xyx xxyxx