但行好事
莫论前程❤

面试题:不使用java库函数实现字符串反转

描述:

给我一个字符串,例如I love java,
输出: avaj evol I
输出: java love I
要求: 不允许使用java库函数。 (库函数 即 别人写好的方法函数)

方法一

public class StringReverse {

    /**
    * 定义一个方法进行交换操作 
    * 第一个字符和最后一个字符交换。。。。第i个和第n-i个交换
    * 数组下标从0开始
    * String 字符串下标从0开始
    * 字符串转字符数组 str.toCharArray()
    * 字符数组转字符串 chars
    */
    public void swap(char[] arr, int begin, int end) {
        while(begin < end) {
            char temp = arr[begin];
            arr[begin] = arr[end];
            arr[end] = temp;
            begin++;
            end--;
        }
    }

    //I love java
    public String swapWord(String str) {
        char[] arr = str.toCharArray(); //字符串转换成字符数组
        swap(arr, 0, arr.length - 1);    //第一次反转。结果: avaj evol I

        return new String(arr);
    }

    //I love java
    public String swapWords(String str) {
        char[] arr = str.toCharArray(); //字符串转换成字符数组
        swap(arr, 0, arr.length - 1);    //第一次反转。结果: avaj evol I
        int begin = 0;
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] == ' ') {
                swap(arr, begin, i - 1);   // java  love I
                begin = i + 1;
            }
        }

        return new String(arr);
    }

    public static void main(String[] args) {
        String str = "I love java";
        System.out.println(new StringReverse().swapWord(str));   // avaj evol I
        System.out.println(new StringReverse().swapWords(str));  // java love I
    }

}

方法二:(利用jdk提供的方法)

public class ReverseTest {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String str = sc.nextLine();

        String[] sArr = str.split(" ");     //I love java

        List<String> list = new ArrayList<String>();

        list = Arrays.asList(sArr);

//      for(int i=0;i<sArr.length;i++){
//          list.add(sArr[i]);
//      }

        Collections.reverse(list);

        for(String word:list){
            System.out.print(word + " ");
        }
    }
}

另外,如果描述改一下,输入一个字符串,例如“abcd”,输出”dcba”,

当然了方法很多,这里我提供一个jdk自带的方法,比较简单

    public static String reverse(String str){
        return new StringBuilder(str).reverse().toString();
    }
赞(1) 打赏
未经允许不得转载:刘鹏博客 » 面试题:不使用java库函数实现字符串反转
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏