中易网

java 实现字符串反转,要求时间和空间复杂度最优

答案:6  悬赏:50  
解决时间 2021-03-14 20:05
比如”abcdef“反转后为“fedcba”,最重要的是时间和空间复杂度的优化。
我的想法是,设置循环,从0开始,到字符串长度的一半,遍历,将第一个和第length-i-1个互换,交换的方法采用不引入第三方的方法,但是整形数据可以采用(a,b,a=a+b,b=a-b,a=a-b),但是字符的话就不会了,求解。
最佳答案
不知为何你有这种想法,如果有好的算法可以和我讨论下,下面我写了2个代码希望能帮到你。

package app;
public class TransDemo {
//abcdef“反转后为“fedcba
public static void main(String[] args){
String str = "abcdef";
char[] ary = str.toCharArray();

for(int i = 0; i< str.length()/2; i++){
int temp = ary[ary.length-i-1]-ary[i];
ary[i] += temp;
ary[ary.length-i-1] -=temp;
}
str = new String(ary);
System.out.println(str);

}
}

package app;
public class TransDemo {
//abcdef“反转后为“fedcba
public static void main(String[] args){
String str = "abcdef";
char[] ary = str.toCharArray();

for(int i = 0; i< str.length()/2; i++){
char c = ary[i];
ary[i] = ary[str.length()-1-i];
ary[str.length()-1-i] = c;
}
str = new String(ary);
System.out.println(str);

}
}
全部回答
这道题考的是字符串的算法 洗牌算法 思路大概是:令A = " ab " B = " cdef " C = " abcdef " 则 A' = " (ab)' " = " ba " B' = " (cdef)' " = " fedc " 故 由线代里矩阵转置的定理可得: C' = (AB)' = B'A' = fedcba 算法不用多说了吧,Java里由反转的方法,可以直接引用。重点是了解一下洗牌算法最简单的一个例子。
char 就是 int。无所谓文字还是数字
char c1='a'; char c2='b'; c1=c1+=c2; c2=(char)(c1-c2); c1=c1-=c2;
StringBuffer和StringBuilder都自带反转的方法reverse(),再toString()即可。
不知为何你有这种想法,如果有好的算法可以和我讨论下,下面我写了2个代码希望能帮到你
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
多囊卵巢吃达英35已经20天了为什么还不止血
捷普普工是做些什么?
摄像机磁带受潮导致采集出来的视频画面有马赛
恒运通讯在哪里啊,我有事要去这个地方
我想知道这个的闪光LED牌子能不能挂,城管过
ipod能不能放APE文件
桓台8月19日酒驾处理结果
怎样跳广场舞
月经结束后两天,流出淡黄色液体是怎么回事
请问《天涯同命鸟》中的三瑞是谁扮演的?这是
集美大学财经文献资源信息中心怎么去啊,有知
最近头发里很多头皮屑,是什么原因?
为何新买的锦鲤攻击性特别强
合同已签房产证未到手的房子能转让吗
想“展宏图大志”,而我们是他成功的基础,应该
推荐资讯
四合汽车美容地址有知道的么?有点事想过去
求MMD男性舞蹈数据
我的硬盘是130G的C盘55.2G D盘64G C盘太小了
天贶宾馆地址在哪,我要去那里办事
蓝宝石r7 350 2g d5 海外版功率是多少
从南京去西塘古镇,从南京做火车做到嘉善站下
天热(改为比喻句)
福州有huan妻吗?
三日龄鸡要补什么营养
社保如何退款 ???
薛城不动产证去哪办
狗崽怎么做好吃
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?