日期:2014-05-18  浏览次数:20711 次

关于字符串反转的问题
例如:
1、ABCFECBA 返回 ABC
2、ABA 返回 ABA
3、ABC 返回 A
4、ABCDFEEFCBA 返回 ABC

------解决方案--------------------
无配置向导用一个for循环守卫判断。。。。。还是等高手生成令人激动的代码吧
------解决方案--------------------

//以下只是大概思路,可能会有错的地方
String  str == "ABCDFEEFCBA ";
StringBuilder  sb = new StringBuilder(str);
String strTemp = sb.reverse().toString();//abc 则返回的是cba
if(str.equals(strTemp)){//你说的第二种情况、但是不知道abba这种是不是也返回
  return strTemp ;
}else{
//思路:str = ABCFECBA; reverse() 后:str2 = ABCEFCBA;
//依次逐个比较,只要有一个不等,则不是需要返回的字符,如果依次相等,则是要反回的字符,
//但是只需要比较到一般的位置(strBytes.length/2),ABCDDCBA,ABCDCBA这两种要区分一下。

StringBuilder  sb2 = new StringBuilder();

int len = str.length();
byte[] strBytes = str.getBytes();
byte[] strTempBytes = str.getBytes();
boolean falg = false;
for(int i=0;i<strBytes.length/2;i++){
    if(strBytes[i] != strTempBytes[i]){
       flag = true;
    }
    if(strBytes[i]==strTempBytes[i] && flaf == false){
          sb2.append(strBytes[i]);
    }
}

}

------解决方案--------------------
我想到一个思路 不知道能不能帮助你:

我觉得查找算法中有个二分查找时候这种情况
str1 ABCDEFCBA 倒转得到 str2 =ABCFEDCBA 

将str1 中间截断 得到前半截 ABCD 看看 str2.startWith('ABCD');

这样来 递归就行了 我个人认为比较快
------解决方案--------------------
public class StringDemo
{
public static void main(String[] args)
{
System.out.println("ABCFECBA" + "\t返回\t" + getStr("ABCFECBA"));
System.out.println("ABA" + "\t\t返回\t" + getStr("ABA"));
System.out.println("ABC" + "\t\t返回\t" + getStr("ABC"));
System.out.println("ABCDFEEFCBA" + "\t返回\t" + getStr("ABCDFEEFCBA"));