写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。
相关文章
点此查看 【算法系列】 博客文章
目录
1 方式一: 将字符串转化为char[ ]2 方式二: 使用String拼接的方式3 方式三: 使用StringBuilder/StringBuffer
给定一个字符串,将字符串中指定部分进行反转。 例如:将 “helloabcdworld” 反转为 “hellodcbaworld”
不管在学习还是工作中,都会遇到操作字符串的问题,官方API里面给出了它的很多方法,只要对这些方法熟练于心,就很容易实现操作字符串。关于字符串的常用方法在此不详细介绍,参考官方文档,在以后的博客中我也会总结Java中String、StringBuilder、StringBuffer的常用方法。
这篇博客提供了三种方式实现字符串的反转操作
1 方式一: 将字符串转化为char[ ]
public class StringReverse {
public static void main(String
[] args
) {
String str
= "helloabcdworld";
int start
= 5;
int end
= 8;
System
.out
.println("原先的字符串: "+str
);
String strNew
=strReverse(str
, start
, end
);
System
.out
.println("指定部分进行反转后的字符串: "+strNew
);
}
private static String
strReverse(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
;
}
String s
= String
.valueOf(charArray
);
return s
;
}
return null
;
}
}
代码执行结果:
原先的字符串
: helloabcdworld
指定部分进行反转后的字符串
: hellodcbaworld
2 方式二: 使用String拼接的方式
public class StringReverse1 {
public static void main(String
[] args
) {
String str
= "helloabcdworld";
int start
= 5;
int end
= 8;
System
.out
.println("原先的字符串: "+str
);
String strNew
=strReverse(str
, start
, end
);
System
.out
.println("指定部分进行反转后的字符串: "+strNew
);
}
private static String
strReverse(String str
, int start
, int end
) {
String strNew
= str
.substring(0, start
);
for (int i
= end
; i
>= start
; i
--) {
strNew
+= str
.charAt(i
);
}
strNew
+= str
.substring(end
+ 1);
return strNew
;
}
}
在此不再展示测试结果,结果和第一种方式一样。
3 方式三: 使用StringBuilder/StringBuffer
public class StringReverse2 {
public static void main(String
[] args
) {
String str
= "helloabcdworld";
int start
= 5;
int end
= 8;
System
.out
.println("原先的字符串: "+str
);
String strNew
=strReverse(str
, start
, end
);
System
.out
.println("指定部分进行反转后的字符串: "+strNew
);
}
private static String
strReverse(String str
, int start
, int end
) {
StringBuilder stringBuilder
= new StringBuilder(str
.length());
stringBuilder
.append(str
.substring(0, start
));
for (int i
= end
; i
>= start
; i
--) {
stringBuilder
.append(str
.charAt(i
));
}
String substring
= str
.substring(end
+ 1);
stringBuilder
.append(substring
);
return stringBuilder
.toString();
}
}
在此不再展示测试结果,结果和第一种方式一样。
在反转操作中,由于不需要考虑多线程安全的问题,优先采用StringBuilder,StringBuilder 和StringBuffer. 都是可变的字符序列,但是StringBuilder 的效率高。
上一篇 经典算法(2)一文搞懂二分法查找(循环和递归两种方式) 下一篇 经典算法(4)一文搞懂什么是 快速排序