您的位置:首页 > 职场人生

字符串反转问题总结

2017-09-01 19:03 337 查看
题目:写一个函数,将字符串反转,反转方式如下:“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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息