目录

裴先生
裴先生
发布于 2022-04-21 / 3 阅读
0
0

算法题:HJ12 字符串反转

原创

题目描述

接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)

题目要求

  • 输入描述:
    输入一行,为一个只包含小写字母的字符串。
  • 输出描述:
    输出该字符串反转后的字符串。

示例1

  • 输入: abcd
  • 输出: dcba

💡 优化后的 JAVA 解法

这里提供两种优化方案:一种是利用 Java 内置的高效方法,另一种是手动实现反转逻辑(面试中更常见)。

方案一:使用 StringBuilder.reverse() (最简洁)

这是最推荐的方法,代码量少且执行效率高。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 读取输入
        if (sc.hasNextLine()) {
            String str = sc.nextLine();
            // 直接利用 StringBuilder 的 reverse 方法反转并输出
            System.out.println(new StringBuilder(str).reverse().toString());
        }
        sc.close();
    }
}

方案二:双指针法 / 字符数组 (手动实现)

如果不允许使用内置的 reverse() 方法,可以使用字符数组进行首尾交换,或者倒序遍历拼接。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        if (sc.hasNextLine()) {
            String str = sc.nextLine();
            // 将字符串转换为字符数组
            char[] chars = str.toCharArray();
            int left = 0;
            int right = chars.length - 1;
            
            // 双指针交换法
            while (left < right) {
                char temp = chars[left];
                chars[left] = chars[right];
                chars[right] = temp;
                left++;
                right--;
            }
            
            System.out.println(new String(chars));
        }
        sc.close();
    }
}

原创

版权声明:本博客原创文章,由 裴先生 2022年04月21日 发表。
转载说明:除特殊说明外本站文章皆由 CC BY-NC-SA 4.0 协议发布,转载须注明出处。


评论