[面试题]不用中间变量,如何反转一个字符串

西夏一品堂 发布于 2015/05/28 10:02
阅读 1K+
收藏 1
不许用中间变量,如何把字符串 ABCDE 反转
加载中
1
安西都护府首席程序员
安西都护府首席程序员
String teststr="123456789";
		
		
		char[] cs=teststr.toCharArray();
		
		for(int i=0;i<cs.length/2;i++){
			cs[i]=(char) (cs[i]+cs[cs.length-1-i]);
			cs[cs.length-1-i]=(char) (cs[i]-cs[cs.length-1-i]);
			cs[i]=(char) (cs[i]-cs[cs.length-1-i]);
		}
		
		System.out.println(new String(cs));



sxgkwei
sxgkwei
声明了变量 cs ,i
1
萌萌哒丶
萌萌哒丶
public static String reverse(String str){
        if(str == null || str.length()<=1){
            return str;
        }
        return reverse(str.substring(1))+str.charAt(0);
    }
0
十月阳光
十月阳光

我觉得这个思路是否正确:

加入这个字符串变量是s="ABCDE",将E取出来直接放到s的末尾,变成s="ABCDEE",然后取D,一直取到A,s="ABCDEEDCBA",然后subString截取,就得到了s="EDCBA"

瞌睡来了
瞌睡来了
+1
0
终曲
终曲
记得那个不用中间变量交换两个整数的题么,想起来那个就应该明白了
0
PYPlus
PYPlus


swap(&a[i], &a[n-i])

A=A+B;
B=A-B;-->{(A+B)-B} 所以B就变成A了
A=A-B;-->{(A+B)-A} 所以A就变成B了

0
淘气的小猴子
淘气的小猴子
java可以这样new StringBuilder("ABCDE").reverse().toString()
MZHS
MZHS
那个是别人实现的,他的意思是想自己实现
0
zabcd117
zabcd117

看看push pop的实现原理就知道了

0
求是六六

我猜lz想要的是这个答案吧?

//pseudocode

for i= 1 to S.length/2

  j = S.length-i

 S[i] = S[i]^S[j];

 S[j] = S[i]^S[j];

 S[i] = S[i]^S[j];

0
sxgkwei
sxgkwei
不许使用现成的方法,自己实现又不许使用任何中间变量,我想不到怎么实现。你可以让他给你答案的代码,贴出来让我也见识一下。这不是2个数字互换,2个数字互换毕竟还有2个变量可以用。现在就是整个程序,只有一个变量来指向ABCDE,除过这个变量之外,你不允许声明任何变量,还怎么做?想写个循环最少要声明一个变量 i  吧。好吧,我承认我写不出来,有没有现成代码,让我膜拜一下。
Nox
Nox
赞同。
0
mark35
mark35
有啥意义?
返回顶部
顶部