锁定老帖子 主题:字符串翻转
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-16
最后修改:2008-11-18
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(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-16
建议直接拿一个字符串头尾交换,从第一个循环到中间,就可以了。
不浪费空间,效率也高 |
|
返回顶楼 | |
发表时间: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); } } |
|
返回顶楼 | |
发表时间: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; } |
|
返回顶楼 | |
发表时间: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); } |
|
返回顶楼 | |
发表时间:2008-10-16
StringBuffer sb = new StringBuffer(str); return sb.reverse(); |
|
返回顶楼 | |
发表时间: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); } 这个好! |
|
返回顶楼 | |
发表时间: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()); } |
|
返回顶楼 | |
发表时间: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); } |
|
返回顶楼 | |
发表时间:2008-10-16
从没想过这个问题还有这么多解决方式,长进识了
|
|
返回顶楼 | |