Java回环变位和倒置字符串

回环变位:

如果字符串s中的字符循环移动任意位置之后能够得到另一个字符串t,那么s就被称为t的回环变位。例如,ACTGACG就是TGACGAC的一个回环变位,反之亦然。判定这个条件在基因组序列的研究中很重要。编写一个程序检查两个给定的字符串s和t是否为回环变位。

提示:只需要一行用到indexOf(),length(),和字符串连接的代码。

思路:看到提示给的用到字符串连接的代码,就瞬间思路清晰了,将s自身连接之后得到的s+s字符串中 ,肯定含有子串t。这个循环移动,实际就是在s+s的串中移动位置,移动到最左侧是一个s序列,移动到最右侧还是一个s序列,中间任意位置都是第一个s的后几个拼接上第二个s串的前几个。

关键代码:

 if ((s.length() == t.length()) && (s.concat(s).indexOf(t) >= 0))

倒置字符串:

将字符串倒置,如 abcdefg 变为 gfedcba

思路:递归思想,先将字符串分为左右part,先倒置左右part,然后再依次对左part内部、右part内部进行倒置

关键代码:

    public  static String Reverse(String s){
        int N = s.length();
        if (N <= 1) return s;
        String a = s.substring( 0 , N/2 );
        String b = s.substring(N/2,N);
        return Reverse(b)+ Reverse(a);
    }

猜你喜欢

转载自www.cnblogs.com/mereder/p/9301681.html