重复的模式。需要帮助理解提交的解决方案
Repeated pattern. Need help understanding a submitted solution
寻求帮助以理解其他人提交的解决方案。在我提交我的之后,我在leetcode上查看了其他人,看看其他人想出了什么样的解决方案。
我遇到了一个高效而简单的方法,但我很难理解它。
string checker = (s + s).Substring(1, 2 * s.Length - 2);
return checker.Contains(s);
我的理解是:检查器在 s+s 之间从索引 1 开始构建子字符串;
字符串方法Contain()
在检查器中检查所述字符串;
但是,我可能对 Contain()
;
的基本性质感到困惑
案例:
1.abcabcabc
ex 1. checker = "bcabcabcabcabcabc"; s 检查 abcabcabc;第二个应该包含这个 since (s+s);这 returns 正确;
2.abababc
ex 2.checker = "bababcabababc";它不会包含“abababc”bababc/abababc吗? returns 错误;
Contain()
在 C# 中是如何工作的?优选ELI5;请谢谢!
子串长度是输入长度的两倍减2,所以最后一个字符也会被截断。如果输入完全由重复的“短语”组成,则附加自身将在连接结果的中间显示输入值。第一个和最后一个字符被截断以避免与串联中的原始输入值匹配
input => append input to input => truncate first and last char => result
ab => abab => ba => !contains(ab)
abc => abcabc => bcab => !contains(abc)
abab => abababab => bababa => contains(abab)
^--^
abcabc => abcabcabcabc => bcabcabcab => contains(abcabc)
^----^
寻求帮助以理解其他人提交的解决方案。在我提交我的之后,我在leetcode上查看了其他人,看看其他人想出了什么样的解决方案。
我遇到了一个高效而简单的方法,但我很难理解它。
string checker = (s + s).Substring(1, 2 * s.Length - 2);
return checker.Contains(s);
我的理解是:检查器在 s+s 之间从索引 1 开始构建子字符串;
字符串方法Contain()
在检查器中检查所述字符串;
但是,我可能对 Contain()
;
案例:
1.abcabcabc
ex 1. checker = "bcabcabcabcabcabc"; s 检查 abcabcabc;第二个应该包含这个 since (s+s);这 returns 正确;
2.abababc
ex 2.checker = "bababcabababc";它不会包含“abababc”bababc/abababc吗? returns 错误;
Contain()
在 C# 中是如何工作的?优选ELI5;请谢谢!
子串长度是输入长度的两倍减2,所以最后一个字符也会被截断。如果输入完全由重复的“短语”组成,则附加自身将在连接结果的中间显示输入值。第一个和最后一个字符被截断以避免与串联中的原始输入值匹配
input => append input to input => truncate first and last char => result
ab => abab => ba => !contains(ab)
abc => abcabc => bcab => !contains(abc)
abab => abababab => bababa => contains(abab)
^--^
abcabc => abcabcabcabc => bcabcabcab => contains(abcabc)
^----^