這是一個編碼練習。假設我必須決定是否一個字符串是由另一個循環移位創建的。例如:cab
是循環移位abc
,但是cba
不是。如何查找給定輸入中的所有循環移位字符串?
給定兩個字符串s1
和s2
我們能做到這一點,如下所示:
if (s1.length != s2.length) return false for(int i = 0; i < s1.length(); i++) if ((s1.substring(i) + s1.substring(0, i)).equals(s2)) return true return false
現在,如果我有一個字符串數組,並希望找到屬於彼此的循環移位所有字符串?例如:["abc", "xyz", "yzx", "cab", "xxx"] -> ["abc", "cab"], ["xyz", "yzx"], ["xxx"]
它看起來像我必須檢查所有對的字符串。有沒有「更好」(更高效)的方法來做到這一點?
他的問題是'language-agnostic'。 – Cratylus 2012-01-15 18:28:02
爲了舉例,我在Java中提供了片段...我使用了散列表和字符串,我會說解決方案也是語言不可知的,不是嗎? – 2012-01-15 18:46:31