Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Làm chủ đảo ngược chuỗi trong Java: Các kỹ thuật đơn giản, hiệu quả

Đảo ngược chuỗi là câu hỏi thường gặp trong phỏng vấn Java. Interviewer có thể yêu cầu viết nhiều cách, không dùng built-in method, hoặc dùng đệ quy.

Dưới đây là các phương pháp đảo ngược chuỗi trong Java.

Đảo ngược chuỗi trong Java - Cách dễ nhất

Cách dễ nhất: dùng method reverse() của class StringBuilder.

package io.devqa.tutorials;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

class ReverseString {
    String reverse(String inputString) {
        return new StringBuilder(inputString).reverse().toString();
    }
    @Test
    public void testAWord() {
        assertEquals("tobor", new ReverseString().reverse("robot"));
    }
}
  • Tại sao override toString() trong Java
  • Cách so sánh chuỗi trong Java
  • Cách trích xuất số từ chuỗi
  • Cách chuyển String sang Int trong Java

Đảo ngược chuỗi dùng đệ quy

Cách khác: dùng đệ quy và method charAt() của class String.

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

class ReverseString {
    String reverse(String inputString) {
        StringBuilder reverseStringBuilder = new StringBuilder();
        for (int i = inputString.length() - 1; i >= 0; i--) {
            reverseStringBuilder.append(inputString.charAt(i));
        }
        return reverseStringBuilder.toString();
    }
    @Test
    public void testAWord() {
        assertEquals("tobor", new ReverseString().reverse("robot"));
    }
}

Biến thể: dùng toCharArray() và lặp qua các ký tự:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

class ReverseString {
    String reverse(String inputString) {
        String outString = "";
        for (char c : inputString.toCharArray()) {
            outString = c + outString;
        }
        return outString;
    }
    @Test
    public void testAWord() {
        assertEquals("tobor", new ReverseString().reverse("robot"));
    }
}

Đảo ngược chuỗi trong Java 8

import org.junit.jupiter.api.Test;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static org.junit.jupiter.api.Assertions.assertEquals;

class ReverseString {
    String reverse(String inputString) {
        return IntStream.range(0, inputString.length())
            .mapToObj(x -> inputString.charAt((inputString.length() - 1) - x))
            .map(character -> String.valueOf(character))
            .collect(Collectors.joining(""));
    }
    @Test
    public void testAWord() {
        assertEquals("tobor", new ReverseString().reverse("robot"));
    }
}