当前位置: 首页 > news >正文

常见算法题目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. 总结

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

相关文章:

  • 2025年—ComfyUI_最新插件推荐及使用(实时更新)
  • 保姆式一步一步制作B端左侧菜单栏
  • 游园安排--最长上升子序列+输出序列
  • 力扣:《螺旋矩阵》系列题目
  • Vant4+Vue3+Vite开发搭建教程
  • 【Redis】分布式缓存的一系列问题(持久化,主从集群,哨兵,分片集群)
  • 解决Docker容器内yum: not found、apt: not found、apk: command not found等命令找不到问题
  • 开发者工具箱-鸿蒙颜色转换器开发笔记
  • python打卡训练营打卡记录day35
  • 《算法导论(第4版)》阅读笔记:p127-p133
  • C语言 — 内存函数和数据的存储
  • 【Code Agent Benchmark】论文分享No.15:TAU-Bench
  • Windows下编译Zipios
  • 线性回归原理推导与应用(七):逻辑回归原理与公式推导
  • 解决input框被禁用后无法添加点击事件的几个方案
  • 前端大文件上传性能优化实战:分片上传分析与实战
  • 构建Harbor私有镜像库
  • MySQL--day7--聚合函数
  • 【一对一文件重命名】如何按照Excel表格文件名对应的关系,批量一对一的批量改名,一对一关联改名,如何按照映射关系一对一重命名文件夹
  • Serv00 免费邮局 搭建属于自己的域名邮箱 支持 SMTP / Catch-all
  • 电子电路:为什么导体中的电子数量能够始终保持不变?
  • NSSCTF-[羊城杯 2023]程序猿Quby
  • 【通用技巧】技术文章工业级指南:目标定位、架构设计与持续演进
  • PINN高阶技术综合应用:复杂问题求解与神经算子进阶
  • NV123NV134美光闪存颗粒NV139NV143
  • 52页 @《人工智能生命体 新启点》中國龍 原创连载
  • 详细设计文档怎么写?@附参考原件
  • Spring Boot中如何对密码等敏感信息进行脱敏处理
  • 【一. Java基础:注释、变量与数据类型详解】
  • 安卓11 多任务视图270 度的情况报错