问题描述:如果字符串s中的字符循环移动任意位置之后能够得到另一个字符串t,那么s就被称为t的回环变位(circular rotation)。例如,ACTGACG就是TGACGAC的一个回环变位,反之亦然。判定这个条件在基因组序列的研究中是很重要的。编写一个程序检查两个给定的字符串s和t是否互为回环变位。(提示:答案只需要一行用到indexOf()、length()和字符串连接的代码)
自己写的(实在想不到怎么一行完成,呵呵):
import edu.princeton.cs.algs4.*;
public class rotation {
public static void main(String[] args){
String s="ACTGACG";
String t="ACTGACG";
if(s.length()!=t.length()){
StdOut.print("no");
}else{
for(int i=0;i<s.length();i++){
if((s.substring(i, s.length())+s.substring(0, i)).equals(t)){
StdOut.print("yes");
break;
}
if(i==s.length()-1)
StdOut.print("no");
}
}
}
}
标准答案(没有对比,伤害何来之有)
import edu.princeton.cs.algs4.*;
public class rotation {
public static void main(String[] args){
String s="ACTGACG";
String t="ACTGACG";
if(s.length()==t.length()&&s.concat(s).indexOf(t)!=-1)
StdOut.print("yes");
else
StdOut.print("no");
}
}