当前位置: 首页 > 面试题库 >

面试问题:检查一个字符串是否是另一字符串的旋转

梁丘赞
2023-03-14
问题内容

我的一个朋友今天在面试中被问到以下问题,询问软件开发人员的职位:

给定两个字符串s1s2您将如何检查是否s1为的 旋转 版本s2

例:

如果是,s1 = "stackoverflow"那么以下是其一些轮换版本:

"tackoverflows"
"ackoverflowst"
"overflowstack"

其中,作为"stackoverflwo" 旋转的版本。

他给出的答案是:

s2,发现为子串最长前缀s1,这将使你的旋转点。找到该点后,s2在该点断开以获取s2as2b,然后检查是否concatenate(s2a,s2b) == s1

对于我和我的朋友来说,这似乎是一个很好的解决方案。但是面试官却不这么认为。他要求一个更简单的解决方案。请告诉我您将如何做来帮助我Java/C/C++

提前致谢。


问题答案:

首先确保s1s2的长度相同。然后检查是否s2是一个s1s1以下内容串联的子字符串:

algorithm checkRotation(string s1, string s2) 
  if( len(s1) != len(s2))
    return false
  if( substring(s2,concat(s1,s1))
    return true
  return false
end

在Java中:

boolean isRotation(String s1,String s2) {
    return (s1.length() == s2.length()) && ((s1+s1).indexOf(s2) != -1);
}


 类似资料:
  • 例如: 字符串1=helloworld字符串2=asdfuvjerhelloworld 这应该是真的。 另一个例子:字符串1=helloworld字符串2=lshewodxzr 这也应该是真的。 所以我正在研究如何创建一个方法,它将返回一个布尔值,检查第二个字符串是否包含第一个字符串中的字母。在第二个示例中,string2只有一次字母l,尽管字母l在string1中出现了三次,但仍然返回true。

  • rank ▲ ✰ vote url 41 487 108 705 url 检查一个字符串是否是一个数字 如果一个字符串可以被看做一个数字那么有什么好的方法可以检测出来? 我能想到的方法: def is_number(s): try: float(s) return True except ValueError: return Fals

  • 问题内容: 如何在JavaScript中编写等效于C#的代码? 注意:这是一个古老的问题,正如评论中指出的ECMAScript2015(ES6)引入了该方法。但是,在撰写此更新(2015)时,浏览器支持还远远没有完成。 问题答案: 你可以使用方法,但并非所有浏览器都支持该方法。你可能需要使用填充程序/填充来将其添加到不支持它的浏览器中。创建一个符合规范中所有细节的实现有点复杂。如果你想要忠实的垫片

  • 问题内容: 如何检查数组中的任何字符串是否在另一个字符串中? 喜欢: 该代码行不通,只是为了展示我想要实现的目标。 问题答案: 你可以使用: 同样,要检查是否找到了列表中的所有字符串,请使用all代替any。

  • 我想解析一个字符串,看看它是匹配整个字符串还是子字符串。我试过这个: 但我的问题是:

  • 我想检查两个代码是否包含一个代码中的所有字符,并忽略它有额外字符的事实。