使用给定字符串生成其所有可能的分区的方法的实现,这些分区是回文,使用 Linq 方法



我什至不知道从哪里开始,比如使用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

相关内容

  • 没有找到相关文章

最新更新