题目要求:
使用Java实现字符串反转操作,如输入:darkblue,输出eulbkrad。
解法1:
- /**
- * @author darkblue
- * @version 1.0
- */
- public class ReverseString {
- /**
- * 反转字符串
- * @param orginalString
- * @return
- */
- public static String reverse(String orginalString) {
- // null check
- if(orginalString == null) {
- return null;
- }
- // chars
- char[] chars = orginalString.toCharArray();
- for(int i = 0; i < chars.length / 2; i++) {// iterate
- char currentChar = chars[i];
- chars[i] = chars[chars.length - i - 1];// swap
- chars[chars.length - i - 1] = currentChar;
- }
- return new String(chars);
- }
- public static void main(String[] args) {
- System.out.println(reverse("darkblue"));
- }
- }
原理是反序就是交换开始和结束处的字符,所以可以用字符数组进行字符交换,从而实现反序操作。
解法2:
- /**
- * @author darkblue
- * @version 1.0
- */
- public class ReverseString {
- /**
- * 反转字符串
- * @param orignalString
- * @return
- */
- public static String reverse2(String orignalString) {
- // null check
- if(orignalString == null) {
- return null;
- }
- String result = "";
- while(result.length() != orignalString.length()) {
- result += orignalString.charAt(orignalString.length()
- - result.length() -1);
- }
- return result;
- }
- public static void main(String[] args) {
- System.out.println(reverse2("darkblue"));
- }
- }
上述算法使用循环和字符串长度方法进行原始字符的获取,也可以实现相应的效果。
PS:就效率而已,解法2不是很理想。会在Java堆上不断产生新对象。
转载于:https://blog.51cto.com/zhangtaolv/527251