บทนำ
ในบทความนี้ เราจะเรียนรู้วิธีการสลับคู่ตัวอักษร (Swap pair of characters) ใน Java เราจะแปลงสตริงที่กำหนดเป็นอาร์เรย์ตัวอักษร (Character array) ซึ่งจะช่วยให้เราสลับคู่ตัวอักษรได้
ตัวอย่างการทำงาน
อินพุทตัวอย่าง:
Input string: Java program
เอาต์พุทที่คาดหวัง:
The string after swapping is: Javg proaram
อัลกอริทึม
ขั้นตอนที่ 1 - เริ่มต้น ขั้นตอนที่ 2 - ประกาศสตริง input_string, อาร์เรย์ตัวอักษร character, และออบเจ็กต์สตริง result ขั้นตอนที่ 3 - กำหนดค่า ขั้นตอนที่ 4 - แปลงสตริงเป็นอาร์เรย์ตัวอักษร ขั้นตอนที่ 5 - สลับตัวอักษรโดยใช้ตัวแปรชั่วคราว temp ขั้นตอนที่ 6 - แปลงอาร์เรย์ตัวอักษรกลับเป็นสตริง ขั้นตอนที่ 7 - แสดงสตริง ขั้นตอนที่ 8 - จบการทำงาน
ตัวอย่างที่ 1: เขียนในฟังก์ชัน main โดยตรง
public class SwapCharacter {
public static void main(String args[]) {
String input_string = "Java program";
System.out.println("The string is defined as: " + input_string);
int i = 3, j = input_string.length() - 4;
char character[] = input_string.toCharArray();
char temp = character[i];
character[i] = character[j];
character[j] = temp;
String result = new String(character);
System.out.println("\nThe string after swapping is: " + result);
}
}
เอาต์พุท
The string is defined as: Java program The string after swapping is: Javg proaram
ตัวอย่างที่ 2: ใช้เมธอดแยก (Object-Oriented Style)
public class SwapCharacter {
static char[] swap(String input_string, int i, int j) {
char character[] = input_string.toCharArray();
char temp = character[i];
character[i] = character[j];
character[j] = temp;
return character;
}
public static void main(String args[]) {
String input_string = "Java program";
System.out.println("The string is defined as: " + input_string);
System.out.println("\nThe string after swapping is: ");
System.out.println(swap(input_string, 3, input_string.length() - 4));
}
}
เอาต์พุท
The string is defined as: Java program The string after swapping is: Javg proaram
การอธิบายตัวอย่าง:
สตริง "Java program" (ความยาว 12)
- ดัชนี 3 = 'a' (ตัวที่ 4 ของ "Java")
- ดัชนี 12-4 = 8 = 'r' (ตัวที่ 9 ของ "program")
- สลับ 'a' กับ 'r' → "Javr proagram" = "Javg proaram"
การสลับคู่ที่อยู่ติดกัน (Adjacent swap - ทุก 2 ตัว):
public static String swapAdjacentPairs(String input) {
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length - 1; i += 2) {
char temp = chars[i];
chars[i] = chars[i + 1];
chars[i + 1] = temp;
}
return new String(chars);
}
// "Java" → "aJva" (J↔a, v↔a)