</pre>最近趁着BOSS没逼着写论文,偷懒看看算法,参考书是算法第四版,看到习题1.2.6的时候,发现数学不好的孩子看算法果然是硬伤。。。。<p></p><p>题目大概意思是 判断一个字符串是否能够通过另一个字符串的循环移位得到,原文描述是:如果字符串S中的字符循环移动任意位置后能够得到一个字符串T,那么S就被称为T的回环变位,然后就是判断两个字符串是否互为回环变位。。</p><p>这坑爹的题目看的我脑洞大开,想想怎么可能和给出的例子一样简单呢,一定是我打开的方式不对,于是构造了无数稀奇古怪的字符串,直接把自己给坑了,想了半天发现这些坑爹的字符串貌似只能通过数量来判断了呀。。。后来仔细看了看题目才发现“循环移位”这个关键字,数学不好的孩子果断伤不起,找度娘求救之后才明白,这题目其实很简单,纯粹是我自己在坑自己啊,顺便把代码记下来了</p><p></p><pre name="code" class="java">public class CircularRotation {
public boolean CircularCompare(String s1, String s2) {
<span style="white-space:pre"> </span>if(s1.length == s2.length){
<span style="white-space:pre"> </span>return s1.concat(s1).indexOf(s2) != -1;
<span style="white-space:pre"> </span>}
}
public static void main(String[] args) {
String s1 = "ACTGACG";
String s2 = "TGACGAC";
System.out.println(new CircularRotation().CircularCompare(s1, s2));
}
}
但是,书上还有一段说明不太明白,“提示:答案只需要一行用到indexof()、length()和字符串连接的代码”
貌似都没有用到indexof()、length(),这个目前还木有想明白。。length()还可以用来判断俩字符串是否相等,indexof 就不知道了。。用来返回值?