问题描述
- 用java实现字符串的镜像翻转
-
用java实现一个方法,将一个字符串进行镜像翻转,例如ABC翻转为CBA,又如1234翻转为3412,再如abcde翻转为decab。
解决方案
public static String doMirroringConvert(String str) {
str = convertStr(str);
// 字符串长度
int size = str.length();
// 是否是偶数
int IsEven = size % 2;
int centeEndIndex = size % 2 == 0 ? size >> 1 : (size - 1) >> 1;
StringBuilder sb = new StringBuilder();
// 字符串长度为偶数
if (IsEven == 0) {
String start = convertStr(str.substring(0, centeEndIndex));
String end = convertStr(str.substring(centeEndIndex, size));
sb.append(start).append(end);
}
// 字符串长度为基数
else {
String start = convertStr(str.substring(0, centeEndIndex));
String center = convertStr(str.substring(centeEndIndex, centeEndIndex + 1));
String end = convertStr(str.substring(centeEndIndex + 1, size));
sb.append(start).append(center).append(end);
}
return sb.toString();
}
public static String convertStr(String str) {
// 将String 对象转换为可改变的StringBuffer类对象,然后调用StringBuffer类的reverse()方法实现反转
String strReverse = new StringBuffer(str).reverse().toString();
return strReverse;
}
算是一个勉强的实现吧,性能方面很差,只是一个初步的想法。
解决方案二:
public String doStr(String str){
char[] ch = str.toCharArray();
char[] data=new char[ch.lenth];
for(int i=0;i<ch.length:i++){
data[i]=ch[ch.length-i];
}
return new String(data);
}
解决方案三:
转化成字符数组(调用toCharArray()方法) ,然后把这个数组倒序输出就行