【发布时间】:2022-01-24 18:04:10
【问题描述】:
寻求帮助以了解其他人提交的解决方案。提交后,我在 leetcode 上查看了其他人,以了解其他人提出的解决方案。
我遇到了一种高效且简单的方法,但我很难理解它。
string checker = (s + s).Substring(1, 2 * s.Length - 2);
return checker.Contains(s);
我所理解的:检查器从索引 1 开始在 s+s 之间构建一个子字符串;
字符串方法Contain()在检查器中检查所述字符串;
但是,我可能对Contain() 的基本性质感到困惑;
示例案例:
1.abcabcabc
ex 1. checker = "bcabcabcabcabcabc"; s 检查 abcabcabc;第二个应该包含这个,因为 (s+s);这返回 true;
2.abababc
ex 2. checker = "bababcabababc";它不会包含“abababc” bababc/abababc 吗?返回假;
Contain() 在 C# 中实际上是如何工作的?优选ELI5;请和谢谢!
【问题讨论】:
-
如果您包含问题会很好,我认为这是回文检查?至于
Contains方法见official doc -
@LukeVo "给定一个字符串 s,检查它是否可以通过获取它的子字符串并将子字符串的多个副本附加在一起来构造。"问题是官方文档,在这种情况下无法拯救我。我在这里完全是脑残。我以为我明白 Contain 的意思,但是在这个解决方案之后,我显然不明白
-
一目了然,您的连接字符串中的字符过多。引用的代码应删除连接的第一个和最后一个字符。否则包含将毫无意义。
-
@MarkBalhoff 然而,这个解决方案被成功通过了。我加倍检查以确保没有任何内容被截断,并且确实一直到字符串的末尾。没有任何东西被切断
-
我认为你没有关注我。在示例 #2 中,您将
checker1评估为bababcabababc,但它实际上评估为bababcababab,后者短一个字符且不包含初始字符串。
标签: c# string algorithm contains