反转字符串的7种方法(Java)
2018-04-28 16:38
246 查看
import java.util.Scanner; import java.util.Stack; /** * seven methods for reversing */ public class reverseString { public static void main(String[] args) { // TODO Auto-generated method stub System.out.print("Please input your string : "); Scanner sc = new Scanner(System.in); //迭代器 while(sc.hasNext()){ //hasNext()检查序列中是否有元素,有则返true。next()获得下一个元素,返回值:元素 String str = sc.nextLine(); //Enter键为结束符,返回Enter键前的所有字符(可得到带空格的字符串)。next()对输入有效字符前遇到Tab键、空格键、Enter键等,会被视为结束符 System.out.println("The reversing string is : "+reverse7(str)); //此处变换函数 } } //利用StringBuffer的内置reverse方法进行逆序排序 public static String reverse1(String str){ return new StringBuffer(str).reverse().toString(); } //从头部开始,正序:通过字符串数组实现从尾部开始esrever顺序逐个进入字符串reverse public static String reverse2(String str){ int len =str.length(); String reverse = ""; //空串。方便拼接字符串 for(int i = 0; i<len;i++){ reverse = str.charAt(i) + reverse; //charArt(int index) 返回指定索引处的字符。 } return reverse; } //从尾部开始,倒序 public static String reverse3(String str){ char[] arr = str.toCharArray(); //string转换成char数组 String reverse = ""; for(int i=arr.length-1;i>=0;i--){ reverse +=arr[i]; } return reverse; } //利用栈:First In Last Out //java中不用手动销毁 public static String reverse4(String str) { StringBuffer sb = new StringBuffer(); Stack<Character> s = new Stack<Character>(); //创建只装字符型的stack for(int i = 0;i<str.length();i++) s.add(str.charAt(i)); for(int i = 0;i<str.length();i++) sb.append(s.pop()); //出栈,StringBuffer.append()添加到sb的缓冲区末端;.insert(int index,添加的内容)添加到指定位置 return sb.toString(); } //二位进制的右移,利用临时变量进行交换 public static String reverse5(String str) { StringBuffer sb = new StringBuffer(); for(int i = 0, j = sb.length()-1;i < sb.length()>>>1;i++,j--){ //右移>> char temp = sb.charAt(i); sb.setCharAt(i, sb.charAt(j)); //setCharAt(int index取代的位置, Char ch要替换为的字符串) sb.setCharAt(j, temp); } return sb.toString(); } //递归 public static String reverse6(String str){ int len = str.length(); if(len <= 1 ) return str; String left = str.substring(0, len/2); String right = str.substring(len/2,len); return reverse6(left) + reverse6(right); } //异或^ public static String reverse7(String str){ char[] s = str.toCharArray(); int begin = 0; int end = str.length()-1; while(begin < end){ s[begin] = (char)(s[begin] ^ s[end]); System.out.println("第一次^ : "+s[begin]+s[end]); s[end] = (char)(s[begin] ^ s[end]); //s[begin] 被 s[end]异或两次,得到s[begin] 赋值给s[end] System.out.println("第二次^ : "+s[begin]+s[end]); s[begin] = (char)(s[end]^s[begin] ); System.out.println("第三次^ : "+s[begin]+s[end]); //换位成功 begin++; end--; } return new String(s); } }
相关文章推荐
- java中将字符串反转的7种方法
- 7 种将字符串反转的 Java 方法
- 【字符串反转总结】Java中七种方法实现
- 7 种将字符串反转的 Java 方法
- 关于java中字符串反转的几种方法
- java string字符串反转的方法
- Java中字符串反转的七种方法
- 三种JAVA常用实现字符串反转(Reverse)的方法
- Java中字符串反转的方法
- Java——模拟trim方法,与字符串反转
- 7 种将字符串反转的 Java 方法
- java 自定义的 字符串反转方法 和模拟除去 字符串两端空方法
- Java实现字符串反转的几种方法
- Java中反转字符串我所知的五种方法
- 【Java基础】总结java将字符串反转的7个方法
- 红薯 7 种将字符串反转的 Java 方法
- 7 种将字符串反转的 Java 方法
- 7 种将字符串反转的 Java 方法
- 三种JAVA常用实现字符串反转(Reverse)的方法
- 用Java自己写一个反转字符串的方法