package bianchengart;
/**
*要求:将字符串abcdefg左旋转2位得到cdefgab
* 思路:(递归思想)将字符串分为两部分X=ab Y=cdefg
* 先将X转置得X'=ba
* 再将Y转置得Y'=gfedc
* 最后将(X'Y')转置得cdefg ab
* @author Administrator
*/
public class LeftRotate {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
LeftRotate lr=new LeftRotate();
String s="abcdefg";
String s1=s.substring(0, 2);
String s2=s.substring(2, s.length());
String result="";
String s11=lr.invert1(s1);
String s21=lr.invert1(s2);
result=lr.invert2(s11+s21);
System.out.println(result);
}
/**
* 将String 对象转换为可改变的StringBuffer类对象
然后调用StringBuffer类的reverse()方法实现反转
* @param str
* @return
*/
public String invert1(String str){
StringBuffer sb=new StringBuffer(str);
String s=(sb.reverse()).toString();
return s;
}
/**
* 每次倒序输出一个字符
* @param str
* @return
*/
public String invert2(String str){
String s="";
for (int i = str.length()-1; i>=0; i--) {
s+=str.charAt(i);
}
return s;
}
}
/**
*要求:将字符串abcdefg左旋转2位得到cdefgab
* 思路:(递归思想)将字符串分为两部分X=ab Y=cdefg
* 先将X转置得X'=ba
* 再将Y转置得Y'=gfedc
* 最后将(X'Y')转置得cdefg ab
* @author Administrator
*/
public class LeftRotate {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
LeftRotate lr=new LeftRotate();
String s="abcdefg";
String s1=s.substring(0, 2);
String s2=s.substring(2, s.length());
String result="";
String s11=lr.invert1(s1);
String s21=lr.invert1(s2);
result=lr.invert2(s11+s21);
System.out.println(result);
}
/**
* 将String 对象转换为可改变的StringBuffer类对象
然后调用StringBuffer类的reverse()方法实现反转
* @param str
* @return
*/
public String invert1(String str){
StringBuffer sb=new StringBuffer(str);
String s=(sb.reverse()).toString();
return s;
}
/**
* 每次倒序输出一个字符
* @param str
* @return
*/
public String invert2(String str){
String s="";
for (int i = str.length()-1; i>=0; i--) {
s+=str.charAt(i);
}
return s;
}
}