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(Stringstr){ 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(Stringstr){ 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(Stringstr) { 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); } }

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信