字符串反转问题总结

来源:互联网 发布:sleep water 知乎 编辑:程序博客网 时间:2024/06/09 18:21

题目:写一个函数,将字符串反转,反转方式如下:“I am a student”反转成“student a am I,

总结了通过递归,非递归反转字符串代码,并做出两种不同的反转单词情况的代码,因为比较简单,直接上代码,看注释即可:

public class ReverseString {    /**     *      * @param args the command line arguments     */    public static void main(String[] args) {        // TODO code application logic here        Scanner in = new Scanner(System.in);        String s = in.nextLine();        if(s.contains(" ")){                                 //判断是否有空格            System.out.println("单词反转");            s=gamel(s);        }else{            s=game(s);        }        System.out.println(s);//        StringBuffer sb=new StringBuffer();//        String[] ses=s.split(" ");                            //对单词进行反转,先反转整个字符串,在反转单词//        for(String s1:ses){//            s1=game(s1);sb.append(s1).append(" ");//        }//        System.out.println(sb.toString().substring(0, s.length()));    }//    private static String game(String s) {                    //递归算法(对字符串反转)//        if(s==null||s.length()<2){//            return s;//        }else{//             return game(s.substring(1))+s.charAt(0);//        }//    }    private static String game(String s) {                      //非递归算法(对字符串反转)        char[] cs=s.toCharArray();        for(int i=0,j=cs.length-1;i<j;i++,j--){            char q=cs[j];            cs[j]=cs[i];            cs[i]=q;        }        return new String(cs);    }    private static String gamel(String s) {                      //对单词进行反转,直接对单词进行反转        String[] aStrings=s.split(" ");        StringBuilder sb=new StringBuilder();        for(int i=aStrings.length-1;i>=0;i--){            sb.append(aStrings[i]).append(" ");        }        return sb.substring(0, sb.length()-1);    }}
原创粉丝点击