【leetcode刷题】[简单]344. 反转字符串(reverse string)-java

本文详细解析了如何不使用额外空间反转字符串的方法,通过示例展示了如何原地修改输入数组实现字符串的反转,适用于各种编程场景。

反转字符串 reverse string

题目

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:

输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例 2:

输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

代码模板:

class Solution {
    public void reverseString(char[] s) {
        
    }
}

分析

直接第一个和最后一个交换,第二个和倒数第二个交换,直到到中间。

解答

class Solution {
    public void reverseString(char[] s) {
        for(int i = 0;i < s.length/2; i ++){
            char change = s[i];
            s[i] = s[s.length-1-i];
            s[s.length-1-i] = change;
        }
    }
}
### LeetCode Java 初学者攻略 对于Java初学者而言,在LeetCode上进行有效的训练可以帮助快速掌握基础语法、数据结构和算法思维。以下是针对Java小白设计的一份详细的攻略: #### 1. **基础知识巩固** 在开始之前,建议先熟悉Java的基础知识点,包括但不限于变量声明、控制流语句(if/else, switch)、循环(for, while)、函数定义与调用、面向对象编程(类、继承、多态)。可以通过在线课程或书籍学习相关内容[^3]。 #### 2. **选择合适的起始目** 不建议从力扣的第一【两数之和】盲目开始,因为这可能导致挫败感甚至放弃。相反,应该挑选适合自己当前水平的简单目逐步提升信心和技术能力[^1]。可以优先考虑标记为“Easy”的问作为切入点。 #### 3. **制定合理的计划** 根据个人时间安排设定每日或者每周的目标数量,并保持持续性。例如每天完成三道easy级别的习加上一道medium难度挑战。随着经验积累逐渐增加hard级别尝试次数[^4]。 #### 4. **关注重要主领域** 重点复习以下几个方面: - 数组操作:理解如何遍历访问元素及其索引关系。 - 字符串处理方法:学会运用substring(), indexOf()等功能实现特定需求。 - 基本排序算法原理及其实现方式。 - 使用HashMap解决实际应用中的键值映射场景等问。 #### 5. **利用优质资料辅助学习过程** 如果觉得官方文档不够直观易懂的话,《一线大厂Java面试解析+核心总结学习笔记+最新讲解视频+实战项目源码》这份材料或许能提供很大帮助;它不仅涵盖了理论知识要点解释说明外还有配套实例演示便于模仿练习[^2]。 #### 6. **参与社区讨论交流心得体验** 加入相关论坛群聊分享自己遇到困难时寻求解答的同时也能借鉴他人优秀解法思路开阔眼界增长见识[^5]。 ```java // 示例代码展示简单的数组反转功能 public class ArrayReverse { public static void main(String[] args){ int [] array={1,2,3,4}; reverse(array); System.out.println(Arrays.toString(array)); } private static void reverse(int[] nums){ int start=0; int end=nums.length-1; while(start<end){ swap(nums,start,end); start++; end--; } } private static void swap(int[]arr,int i ,int j ){ int temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值