Back home

الفنون رقم 033

الفنون رقم 033

الفنون 033

الخوارزمية

6. تحويل متعرج

الصعوبة: متوسطة

تتم كتابة السلسلة "PAYPALISHIRING" بنمط متعرج على عدد معين من الصفوف مثل هذا: (قد ترغب في عرض هذا النمط بخط ثابت للحصول على وضوح أفضل)

P   A   H   N
A P L S I I G
Y   I   R

ثم اقرأ سطراً سطراً: "PAHNAPLSIIGYIR"

اكتب الكود الذي سيأخذ سلسلة وإجراء هذا التحويل في عدد من الصفوف:

string convert(string s, int numRows);

مثال 1:

Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"

مثال 2:

Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:

P     I    N
A   L S  I G
Y A   H R
P     I

الحل

لا داعي للقلق بشأن ما قد يحدث.

اللغة: سويفت


class Solution{
    func convert(_ s: String, _ numRows: Int) -> String {
        if s.count <= numRows ||  numRows == 1{
            return s;
        }
        
        var rowStrs = Array(repeating: "", count: numRows)
        
        var step = 0
        var start = 0
        
        for i in 0..<s.count {
            let char = s[s.index(s.startIndex, offsetBy: i)]
            rowStrs[start].append(char)
            if start == 0 {
                step = 1;
            }
            else if start == (numRows - 1) {
                step = -1;
            }
            start = start + step
        }
        
        var result = ""
        for i in 0..<rowStrs.count  {
            result = result + rowStrs[i]
        }
        return result
    }
}

7. عدد صحيح عكسي

الصعوبة: سهل

بالنظر إلى عدد صحيح بعلامة 32 بت، عكس أرقام العدد الصحيح.

مثال 1:

Input: 123
Output: 321

مثال 2:

Input: -123
Output: -321

مثال 3:

Input: 120
Output: 21

ملاحظة:
لنفترض أننا نتعامل مع بيئة يمكنها فقط تخزين الأعداد الصحيحة ضمن نطاق الأعداد الصحيحة ذات الإشارة 32 بت: [−2<sup>31</sup>,  2<sup>31</sup>− 1]. لغرض هذه المشكلة، افترض أن وظيفتك ترجع 0 عند تجاوز العدد الصحيح المعكوس.

الحل

اللغة: سويفت

class Solution {
    func reverse(_ x: Int) -> Int {
        var result = 0
        var tem = x
        
        while tem != 0 {
            if result > Int32.max/10 || result < Int32.min / 10 {
                return 0
            }
            
            result = result * 10 + tem % 10
            tem = tem / 10
        }
        
        return result;
    }
}

أو


class Solution {
    func reverse(_ x: Int) -> Int {
        var result = 0
        var tem = x
        
        while tem != 0 {
            
            
            result = result * 10 + tem % 10
            tem = tem / 10
            
            if result > Int32.max || result < Int32.min {
                return 0
            }
        }
        
        return result;
    }
}

مراجعة

أصناف من المفردات النقية والمفردة وشبه المفردة:

https://dandan2009.github.io/2019/10/24/design-patterns-by-tutorials-the-power-of-OOP-part-2/

نصائح

هل تحتاج إلى عرض خلية talbe أو إعادة تحميل البيانات أو إعادة تحميل البيانات؟ أفضل ما في الأمر هو أن كل شيء على ما يرام

شارك

الإصدار الأحدث من نظام Mac هو 10.15، وxcode، وxcod e11.1، لا داعي للقلق بشأن الكمبيوتر المحمول A PP هو أول من يتولى مسؤولية تشارلز. يمكن أن يكون الكمبيوتر المحمول هو الحل الأمثل.