常见算法题目3 -反转字符串
算法题目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. 总结
方法 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
双指针法 | 显式展示算法逻辑,面试常用 | 代码量稍多 | 面试、算法题 |
库函数法 | 代码简洁,高效 | 隐藏实现细节 | 实际开发、快速实现需求 |