问题描述:如果字符串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"); }}
新闻热点
疑难解答