常见算法题目3 -反转字符串

发布于:2025-05-25 ⋅ 阅读:(13) ⋅ 点赞:(0)

算法题目3 - 给定一个字符串,请输出其反转字符串

1. 问题描述

给定一个字符串,输出其反转后的字符串。
例如:

 String str = "Hello";
 输出:
 olleH

以下介绍双指针法和库函数发实现。

2. 算法解决

2.1 双指针法

维护左、右两个指针,依次循环交换值,代码如下:

/**
     * 题目:反转字符串
     * 给定一个字符串,返回改字符串的反转字符串,例如 "Hello" -> "olleH"
     * 双指针法 时间复杂度 O(n)
     * @param str
     * @return
     */
    public static String reverseStr1(String str) {
        // 转换为字符数组
        char[] charArray = str.toCharArray();
        // 左指针
        int left = 0;
        // 右指针
        int right = charArray.length - 1;
        while (left < right) {
            // 左右数据交换
            char tempChar = charArray[left];
            charArray[left] = charArray[right];
            charArray[right] = tempChar;
            left++;
            right--;
        }
        return new String(charArray);
    }
2.2 库函数法

直接利用当前项目包中的第三方库函数或工具类求解:

 /**
     * 题目:反转字符串
     * 给定一个字符串,返回改字符串的反转字符串,例如 "Hello" -> "olleH"
     * 使用库函数 时间复杂度 O(n)
     * @param str
     * @return
     */
    public static void reverseStr2(String str) {
        // StringBuilder的函数 reverse()
        String reverse1 = new StringBuilder(str).reverse().toString();
        System.out.println("反转字符串,使用库函数-StringBuilder:" + reverse1);
        // hutool 工具类
        // String reverse2 = StrUtil.reverse(str);
        //System.out.println("反转字符串,使用hutool工具类:" + reverse2);
    }

3. 测试

调用测试:

public class ReverseStrTest {
    public static void main(String[] args) {
        String str = "Hello";
        String reverseStr1 = reverseStr1(str);
        System.out.println("双指针法反转字符串:" + reverseStr1);
        System.out.println("========================");
        reverseStr2(str);
    }
   }

打印结果:
在这里插入图片描述

4. 总结

方法 优点 缺点 适用场景
双指针法 显式展示算法逻辑,面试常用 代码量稍多 面试、算法题
库函数法 代码简洁,高效 隐藏实现细节 实际开发、快速实现需求

网站公告

今日签到

点亮在社区的每一天
去签到