【发布时间】:2017-11-10 09:06:59
【问题描述】:
在我的一次采访中,我问过一个关于 java 字符串的程序,我无法回答。我不知道这是一个简单的程序还是复杂的程序。我已经在互联网上进行了探索,但无法找到确切的解决方案。我的问题如下,
我假设一个字符串包含递归模式,例如,
String str1 = "abcabcabc";
上面的字符串递归模式是在一个字符串中重复的“abc”,因为这个字符串递归地只包含“abc”模式。
如果我将此字符串作为参数传递给函数/方法,该函数/方法应返回我 “此字符串具有递归模式。” 如果该字符串没有任何递归模式,则简单的函数/方法应该返回“这个字符串不包含递归模式。”
以下是概率,
String str1 = "abcabcabc";
//This string contains recursive pattern 'abc'
String str2 = "abcabcabcabdac";
//This string doesn't contains recursive pattern
String str2 = "abcddabcddabcddddabc";
//This string contains recursive pattern 'abc' & 'dd'
任何人都可以为此建议我解决方案/算法,我正在努力解决这个问题。不同概率的最佳方法是什么,以便我实施?
【问题讨论】:
-
这与递归有什么关系?一个重复的模式,当然,但是递归?
-
在您的第三个字符串中有
abc和dd以及dddd。这是否意味着可以以任何方式混合超过 1 种模式? -
你的第二个字符串包含 a, b, c, ab, bc, abc, ... 作为重复字符串
-
你需要一个正则表达式,我相信,
if (s.matches("^(abc|dd)+$") {return true;} else { return false; } -
数列的“递归模式”类似于“A(n) = A(n - 1) + k”,例如 1, 4, 7, 10, ... (k = 3)。不确定如何轻松将其扩展到字符串。很确定他们的意思是“重复模式”或类似的。
标签: java string algorithm data-structures pattern-matching