论坛首页 入门技术论坛

字符串翻转

浏览 11125 次
锁定老帖子 主题:字符串翻转
该帖已经被评为新手帖
作者 正文
   发表时间:2008-10-16   最后修改:2008-11-18
OO
public class Test {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  System.out.println(fz("abcdefg"));
 }

 /**
  * 输入字符串abc输出字符创cba
  * 
  * @param s
  * @return
  */
 public static String fz(String s) {
  StringBuffer ss = new StringBuffer();
  String st[] = new String[s.length()];
  for (int i = 0; i < s.length(); i++) {
   st[i]=s.substring(i ,i+1);
  }
  for(int j=st.length-1;j>=0;j--){
   ss.append(st[j]);
  }
  return ss.toString();
 }
}

   发表时间:2008-10-16  
建议直接拿一个字符串头尾交换,从第一个循环到中间,就可以了。

不浪费空间,效率也高
0 请登录后投票
   发表时间:2008-10-16  
试试这个,用递归的
private static String ReverseStr(String Src)
{ 	
	if(Src.length() == 0){
	    return Src;
	}
	else{
	    return ReverseStr(Src.substring(1, Src.length())) + Src.substring(0,1);
	}	
}
0 请登录后投票
   发表时间:2008-10-16  
再来一个挫的!直接用堆栈。好理解!
private static String ReverseStrWithStack(String Src)
{
	Stack<Character> charstack=new Stack<Character>();
	for(int i=0;i<Src.length();i++)
	{
	    charstack.push(Src.charAt(i));
	}
	String rtn="";
	for(int i=0;i<Src.length();i++)
	{
	    rtn+=charstack.pop();  
	}
	return rtn;
}
0 请登录后投票
   发表时间:2008-10-16  
public static String turn(String str) {
char[] result = str.toCharArray();
for(int i=0; i<str.length()/2; i++) {
result[i] = str.charAt(str.length()-i-1);
result[str.length()-1] = str.charAt(i);
}
return new String(result);
}
1 请登录后投票
   发表时间:2008-10-16  
  StringBuffer sb = new StringBuffer(str);
  return sb.reverse();
1 请登录后投票
   发表时间:2008-10-16  
longrm 写道

       public static String turn(String str) {
char[] result = str.toCharArray();
for(int i=0; i<str.length()/2; i++) {
result[i] = str.charAt(str.length()-i-1);
result[str.length()-1] = str.charAt(i);
}
return new String(result);
}


这个好!
0 请登录后投票
   发表时间:2008-10-16  
public static void TurnString() {
	String a ="abcdefg" ;
	StringBuffer b = new StringBuffer();
	for(int i=a.length()-1;i>=0;i--){
		b.append(a.charAt(i));
	}
	System.out.println(b.toString());
}

0 请登录后投票
   发表时间:2008-10-16  
color4you 写道
  StringBuffer sb = new StringBuffer(str);
  return sb.reverse();


看了StringBuffer  中的reverse的源码  拿来用啊!
   public  static  String Reverse3(String str)
	{
	    int count;
		count=str.length();
		char value[]= str.toCharArray(); 
		boolean hasSurrogate = false;
		int n = count - 1;
		for (int j = (n-1) >> 1; j >= 0; --j) {
		    char temp = value[j];
		    char temp2 = value[n - j];
		    if (!hasSurrogate) {
			hasSurrogate = (temp >= Character.MIN_SURROGATE && temp <= Character.MAX_SURROGATE)
			    || (temp2 >= Character.MIN_SURROGATE && temp2 <= Character.MAX_SURROGATE);
		    }
		    value[j] = temp2;
		    value[n - j] = temp;
		}
		if (hasSurrogate) {
		    // Reverse back all valid surrogate pairs
		    for (int i = 0; i < count - 1; i++) {
			char c2 = value[i];
			if (Character.isLowSurrogate(c2)) {
			    char c1 = value[i + 1];
			    if (Character.isHighSurrogate(c1)) {
				value[i++] = c1;
				value[i] = c2;
			    }
			}
		    }
		}
		return new String(value); 
	}

0 请登录后投票
   发表时间:2008-10-16  
从没想过这个问题还有这么多解决方式,长进识了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics