การกลับสตริงเป็นหนึ่งในคำถามที่พบบ่อยที่สุดในการสัมภาษณ์ด้านเทคนิคของ Java ผู้สัมภาษณ์อาจขอให้คุณเขียนวิธีต่างๆ ในการย้อนกลับสตริง หรืออาจขอให้คุณย้อนกลับสตริงโดยไม่ต้องใช้วิธีการที่สร้างขึ้น หรืออาจขอให้คุณย้อนกลับสตริงโดยใช้การเรียกซ้ำ
ด้านล่างนี้คือวิธีการต่างๆ ที่คุณสามารถใช้เพื่อย้อนกลับสตริงใน Java
สตริงย้อนกลับใน Java วิธีที่ง่ายที่สุด
วิธีที่ง่ายที่สุดในการย้อนกลับสตริงใน Java คือการใช้ reverse()
. ในตัว ฟังก์ชันของ 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"));
}
}
ที่เกี่ยวข้อง:
- เหตุใดจึงแทนที่ toString() ใน Java
- วิธีเปรียบเทียบสตริงใน Java
- วิธีดึงตัวเลขออกจากสตริง
- วิธีการแปลงสตริงเป็น Int ใน Java
สตริงย้อนกลับโดยใช้การเรียกซ้ำ
อีกวิธีหนึ่งในการย้อนกลับสตริงในจาวาคือการใช้การเรียกซ้ำและใช้ charAt()
วิธีการของ 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"));
}
}
รูปแบบข้างต้นคือการใช้ toCharArray()
และวนซ้ำอักขระ เช่น:
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"));
}
}
สตริงย้อนกลับใน 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"));
}
}