Java字符串中指定部分反转的三种方式

网友投稿 383 2022-09-05


Java字符串中指定部分反转的三种方式

目录方式一:把字符串转化为char[]方式二:使用String的拼接方式三:使用StringBuffer/StringBuilder替换String附实战例子总结

将“asdfghj”反转为“ashgfdj”

方式一:把字符串转化为char[]

调用String类中toCharArray()方法把字符串转化为字符,而后开始时索引和结束时索引利用for()循环反转指定字符,结束

public class StringDemo {

public static void main(String[] args) {

StringDemo stringDemo = new StringDemo();

String str1 = "asdfghj";

String str2 = stringDemo.reverse1(str1,2,5);

System.out.println("反转后为:" + str2);

}

public String reverse1(String str, int start, int end) {

if (str != null) {

char[] charArray = str.toCharArray();

for (int i = start, j = end; i < j; i++, j--) {

char temp = charArray[i];

charArray[i] = charArray[j];

charArray[j] = temp;mzQdusx

http:// }

return new String(charArray);

}

return null;

}

}

运行结果:

反转后为:ashgfdj

方式二:使用String的拼接

将字符串分割为三部分:需反转字符串前,需反转字符串,需反转字符串之后,调用substring()方法截取字符串,循环倒序遍历需反转字符串部分,后拼接这三部分

public static void main(String[] args) {

StringDemo stringDemo = new StringDemo();

String str1 = "asdfghj";

String str2 = stringDemo.reverse1(str1,2,5);

System.out.prhttp://intln("反转后为:" + str2);

}

public String reverse1(String str, int start, int end) {

// 第一部分

String newStr = str.substring(0, start);

// 第二部分

for (int i = end; i >= start; i--) {

newStr += str.charAt(i);

}

// 第三部分

newStr += str.substring(end + 1);

return newStr;

}

运行结果:

反转后为:ashgfdj

方式三:使用StringBuffer/StringBuilder替换String

相较于方式二的改进,用Stringbuilder中append()方法代替方式二中“+=”,效率更高

public class StringDemo {

public static void main(String[] args) {

StringDemo stringDemo = new StringDemo();

String str1 = "asdfghj";

String str2 = stringDemo.reverse1(str1,2,5);

System.out.println("反转后为:" + str2);

}

public String reverse1(String str, int start, int end) {

StringBuffer s = new StringBuffer(str.length());

// 第一部分

s.append(str.substring(0, start));

// 第二部分

for (int i = end; i >= start; i--) {

s.append(str.charAt(i));

}

// 第三部分

s.append(str.substring(end + 1));

return s.toString();

}

}

运行结果:

反转后为:ashgfdj

注:在方式三中,仅是字符串反转操作,不需要考虑线程安全问题,所以优先选择StringBuilder

附实战例子

对字符串中指定的部分进行旋转,如str="mmabcdfeffnn",指定abcdfeff部分进行旋转,则得到字符串str="mmffefdcbann"。

其实现的思路,我是这样的:将源字符串分为三部分,头,待旋转,尾,其中这三部分都需要进行采取截取的操作,而对于待旋转的部分,这里采用了一个技巧,那就是借用了StringBuffer(String string)作为中介,并调用其中的reverse()方法进行旋转。最后得到的三部分:头,已旋转,尾,进行连接concat(String string)操作即可。

代码如下:

/**

* 字符串指定的部分进行反转

* @author zhonglinsen

* 2016-3-1 下午

*/

public class StringReverse {

public static void main(String[] args) {

String str="mmabcdefnn";

int start=2;

int end=7;

System.out.println("原先字符串: "+str);

String strNew=strReverse(str, start, end);

System.out.println("旋转了指定位置后的字符串: "+strNew);

}

public static String strReverse(String strArg,int start,int end){

String strStart=strArg.substring(0,start);

String strEnd=strArg.substring(end+1,strArg.length());

String strSub=strArg.substring(start, end+1);

StringBuffer sb=new StringBuffer(strSub);

strSub=sb.reverse().toString();

return strStart.concat(strSub).concat(strEnd);

}

}

总结


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:我的第一个Python程序--批量生成Oracle DDL文件(python批量生成文件)
下一篇:# yyds干货盘点 # 盘点对Python列表中每个元素前面连续重复次数的数列统计
相关文章

 发表评论

暂时没有评论,来抢沙发吧~