نظرًا لسلسلة الإدخال، قم بعكس ترتيب الكلمات. يتم تعريف الكلمة على أنها سلسلة من الأحرف غير الفضائية. سيتم فصل الكلمات الموجودة في s بمسافة واحدة على الأقل. إرجاع سلسلة من الكلمات بترتيب عكسي ومتسلسلة بمسافة واحدة.
لاحظ أن s قد تحتوي على مسافات بادئة أو لاحقة أو مسافات متعددة بين كلمتين. يجب أن تحتوي السلسلة التي تم إرجاعها على مسافة واحدة فقط تفصل بين الكلمات. لا تقم بتضمين أي مسافات إضافية.
لحل هذه المشكلة علينا:
function reverseWordsBruteForce(s: string): string { // Split the string by spaces and filter out empty strings let words = s.trim().split(/\s /); // Reverse the array of words words.reverse(); // Join the words with a single space return words.join(' '); }
هذا الحل فعال نظرا للقيود. ومع ذلك، فإنه يستخدم مساحة إضافية لمجموعة الكلمات.
إذا كان نوع بيانات السلسلة قابلاً للتغيير ونحتاج إلى حله في مكانه باستخدام مساحة إضافية O(1)، فيمكننا استخدام تقنية المؤشرين لعكس الكلمات داخل السلسلة الأصلية.
function reverseWordsOptimized(s: string): string { // Trim the string and convert it to an array of characters let chars = s.trim().split(''); // Helper function to reverse a portion of the array in place function reverse(arr: string[], left: number, right: number) { while (leftتحليل تعقيد الوقت:
console.log(reverseWordsBruteForce("the sky is blue")); // "blue is sky the" console.log(reverseWordsBruteForce(" hello world ")); // "world hello" console.log(reverseWordsBruteForce("a good example")); // "example good a" console.log(reverseWordsBruteForce("singleWord")); // "singleWord" console.log(reverseWordsBruteForce(" ")); // "" console.log(reverseWordsOptimized("the sky is blue")); // "blue is sky the" console.log(reverseWordsOptimized(" hello world ")); // "world hello" console.log(reverseWordsOptimized("a good example")); // "example good a" console.log(reverseWordsOptimized("singleWord")); // "singleWord" console.log(reverseWordsOptimized(" ")); // ""
التلاعب بالسلسلة:
تقنية المؤشرين:
الخوارزميات الموضعية:
من خلال ممارسة مثل هذه المشكلات والاستراتيجيات، يمكنك تحسين مهاراتك في حل المشكلات والاستعداد بشكل أفضل لمواجهة تحديات البرمجة المختلفة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3