สร้างวิธีการย้อนกลับคำที่ใช้อาร์เรย์ถ่านเป็นอินพุตและสำหรับอักขระแต่ละตัวและทุกตัวจนกว่าจะถึงช่องว่างไม่ย้อนกลับคำ ในขั้นตอนสุดท้ายจะย้อนกลับสตริงทั้งหมดจากความยาว 0 ถึงความยาว n-1 ในขั้นตอนแรกสตริง "นี่คือหนังสือของฉัน" จะกลายเป็น "koob ym si siht" เมื่อสิ้นสุดขั้นตอนที่ 2 สตริงคำจะถูกเปลี่ยนกลับเป็น “book my is This”
ความซับซ้อนของเวลา − O(N)
ตัวอย่าง
using System; namespace ConsoleApplication{ public class Arrays{ static void reverse(char[] str, int start, int end){ char temp; while (start <= end){ temp = str[start]; str[start] = str[end]; str[end] = temp; start++; end--; } } public char[] reverseWords(char[] s){ int start = 0; for (int end = 0; end < s.Length; end++){ if (s[end] == ' '){ reverse(s, start, end); start = end + 1; } } reverse(s, 0, s.Length - 1); return s; } } class Program{ static void Main(string[] args){ Arrays a = new Arrays(); string s = " This is my book "; var res = a.reverseWords(s.ToCharArray()); Console.WriteLine(new String(res)); Console.ReadLine(); } } }
ผลลัพธ์
book my is This