Computer >> Máy Tính >  >> Lập trình >> Java

Cách dễ nhất để đảo ngược một chuỗi trong Java

Đảo ngược một chuỗi là một trong những câu hỏi thường gặp nhất trong một cuộc phỏng vấn kỹ thuật Java. Người phỏng vấn có thể yêu cầu bạn viết các cách khác nhau để đảo ngược một chuỗi hoặc họ có thể yêu cầu bạn đảo ngược một chuỗi mà không sử dụng các phương pháp có sẵn hoặc thậm chí họ có thể yêu cầu bạn đảo ngược một chuỗi bằng cách sử dụng đệ quy.

Dưới đây là các phương pháp khác nhau mà bạn có thể sử dụng để đảo ngược một chuỗi trong Java.

Chuỗi ngược trong Java, Cách dễ nhất

Cách dễ nhất để đảo ngược một chuỗi trong Java là sử dụng reverse() tích hợp sẵn chức năng của StringBuilder lớp học.

Ví dụ:

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"));
    }
}

Có liên quan:

  • Tại sao lại ghi đè toString () trong Java
  • Cách so sánh các chuỗi trong Java
  • Cách trích xuất các số từ một chuỗi
  • Cách chuyển đổi Chuỗi thành Int trong Java

Đảo ngược chuỗi sử dụng Đệ quy

Một cách khác để đảo ngược một chuỗi trong java là sử dụng đệ quy và sử dụng charAt() phương thức của String lớp học

Ví dụ:

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"));
    }
}

Một biến thể ở trên là sử dụng toCharArray() và lặp lại các ký tự, ví dụ:

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"));
    }
}

Chuỗi ngược 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"));
    }
}