博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于字符串反转和数组反转的问题
阅读量:6005 次
发布时间:2019-06-20

本文共 4115 字,大约阅读时间需要 13 分钟。

关于反转这个问题,在晚上查了些资料,有很多非常不错的思想,要熟练的掌握这些思想,现在把这些总结如下:

字符串反转:

1 import java.util.Stack; 2  3 public class StringInverse { 4     public static void main(String[] args) { 5         System.out.println(reverse7("abcde")); 6     } 7     //方式一 8     public static String reverse1(String s) { 9         int length = s.length();10         if (length <= 1)11             return s;12         String left = s.substring(0, length / 2);//ab13         String right = s.substring(length / 2, length);//de14         return reverse1(right) + reverse1(left);//此处用到了递归!!!15     }16     //方式二17     public static String reverse2(String s) {18         int length = s.length();19         String reverse = "";//空字符串20         for (int i = 0; i < length; i++)21             reverse = s.charAt(i) + reverse;//reverse放在后面22         //charAt()返回的是一个char23         return reverse;24     }25     //方式三26     public static String reverse3(String s) {27         char[] array = s.toCharArray();28         String reverse = "";//空字符串29         for (int i = array.length - 1; i >= 0; i--)30             reverse += array[i];31         //reverse放在前面32         return reverse;33     }34     //方式四35     public static String reverse4(String s) {36         //JDK提供的API37         return new StringBuffer(s).reverse().toString();38     }39     //方式五40     public static String reverse5(String str) {41         //把字符串编程一个字符数组,利用数组的下标来更换字符的位置.42         char[] s = str.toCharArray();43         //返回值是char[] toCharArray()将此字符串转换为一个新的字符数组。44         int n = s.length - 1;45         int halfLength = n / 2;46         for (int i = 0; i <= halfLength; i++) {47             char temp = s[i];48             s[i] = s[n - i];49             s[n - i] = temp;50         }51         //利用String(char[])这个构造方法.52         return new String(s);53     }54     //方式六55     public static String reverse6(String s) {56         char[] str = s.toCharArray();57         int begin = 0;58         int end = s.length() - 1;59         while (begin < end) {60             //同一个数字或者字符串等异或两次还是这个对象.下边的操作就是对str[begin]和str[end]调换位置.61             str[begin] = (char) (str[begin] ^ str[end]);62             str[end] = (char) (str[begin] ^ str[end]);63             str[begin] = (char) (str[end] ^ str[begin]);64             begin++;65             end--;66         }67         return new String(str);68     }69     //方式七70     public static String reverse7(String s) {71         char[] str = s.toCharArray();72         Stack
stack = new Stack
();73 for (int i = 0; i < str.length; i++)74 stack.push(str[i]);75 String reversed = "";76 for (int i = 0; i < str.length; i++)77 reversed += stack.pop();78 //pop()移除堆栈顶部的对象,并作为此函数的值返回该对象。79 return reversed;80 }81 }

数组的反转(我就找到一个比较经典的):

高大上的数组转换位置.....

1 import java.lang.reflect.Array; 2  3 public class ArrayInverse { 4  5     public static void main(String[] args) { 6         int[] myarray = { 1, 2, 3 }; 7         int[] newarray = invertArray(myarray); 8  9         for (int i = 0; i < newarray.length; i++) {10             System.out.print(newarray[i] + " ");11         }12     }13 14     /**15      * 反转数组16      * 17      */18     public static 
T invertArray(T array) {19 int len = Array.getLength(array);20 // 获取泛型的类型(既数组的类型)21 Class
classz = array.getClass().getComponentType();22 // newInstance(Class
componentType,int length)23 // 创建一个具有指定的组件类型和长度的新数组。调用此方法等效于创建如下数组:24 Object dest = Array.newInstance(classz, len);25 26 // arraycopy()从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。27 System.arraycopy(array, 0, dest, 0, len);28 29 Object temp;30 31 for (int i = 0; i < (len / 2); i++) {32 temp = Array.get(dest, i);// get(Object array, int index)返回指定数组对象中索引组件的值。33 Array.set(dest, i, Array.get(dest, len - i - 1));34 Array.set(dest, len - i - 1, temp);35 }36 return (T) dest;37 }38 }

 

本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4082652.html,如需转载请自行联系原作者
你可能感兴趣的文章
Sketchup二次开发之添加组
查看>>
判断radiobutton是否被选中
查看>>
配置 SSH Key ☞ GitHub
查看>>
操作系统思考 第零章 前言
查看>>
kmdjs和循环依赖
查看>>
Handler 系列二:怎么通信
查看>>
WorkPlus JS SDK
查看>>
Elm 架构教程
查看>>
3. C语言 -- 叫你一声你敢答应嘛
查看>>
Android Handler机制(不含源码解析,适合新手理解)
查看>>
ios json转model的简单现实
查看>>
时隔一年,jQuery 发布 3.4.0 版本
查看>>
汤晓鸥为CNN搓了一颗大力丸
查看>>
Android Studio工具修理集
查看>>
Markdown中超链接增加_blank的方法
查看>>
机器人都能造飞机了,你还在呼呼大睡?
查看>>
linux 内核的链表操作(好文不得不转)
查看>>
《泛在服务 ,平台创新》移动电商生态研究报告
查看>>
JVM学习系列:了解JVM options参数配置 & 看懂GC日志
查看>>
12C 对表分区维护的增强
查看>>