... LeetCode Solution - Strong Password Checker,
פתרון ליטקוד, LeetCode Solution,
לפתור שאלות ב LeetCode, מדעי המחשב, תכנות מחשבים, לעבוד בהייטק, ללמוד ... 0. אחדד ואומר, כי בעיקרון השאלה מנוסחת בצורה פחות ברורה ממה שהצגתי לעיל, אבל כאן העדפתי לחסוך את המאמץ של הבנת השאלה ולנסות להתמקד במאמץ של מציאת התשובה. אז איך ניגשים
לפתור את זה? אז כמובן שעלינו לנסות לחלק את התהליך לחלקים כמה שיותר ... קודם כל ננסה להריץ ידנית כל מיני סימולציות, של המקרים הפשוטים ביותר, אחר כך של מקרים יותר מורכבים. אחר כך ננסה למצוא חוקיות כלשהי ובהתאם לכך, ננסה לבנות נוסחה כלשהי
לפתור את השאלה. אז בשלב הראשון, ננסה לחלק לחלקים קטנים. נתנו לנו 3 חוקים שמגדירים מהי סיסמה חזקה. עלינו לנסות להבין האם אנחנו יודעים
לפתור את השאלה, בהינתן רק חוק 1. דהיינו, במקום לנסות להבין איך
לפתור את השאלה כשיש 3 חוקים, נשאל את עצמנו את השאלה הבאה: נניח ... מורכב ולא תנאי פשוט. התנאי היותר פשוט, הוא, אורך הסיסמה חייב להיות לפחות 6 תווים בלי מגבלה על אורך מקסימאלי. ולכן המקרה היותר פשוט שעלינו לראות שאנחנו יודעים למצוא לו
פתרון, הוא, מה קורה אם יש רק חוק 1 שאומר, שסיסמה צריכה להיות לפחות 6 תווים. האם היינו יודעים
לפתור את המקרה הזה? וגם כאן אפשרי להתחיל מצורת שאלה עוד יותר פשוטה: נניח סיסמה חייבת להכיל לפחות תו 1 בלבד. האם היינו יודעים איך
לפתור שאלה כזו? זה המקרה הפשוט ביותר שעלינו לנסות להתחיל
לפתור ממנו. ומאחר שמטרת המאמר היא לא ללמד את
הפתרון של השאלה, אלא כן ללמד איך אפשרי למצוא את
הפתרון לשאלה. ומאחר שכדי למצוא את
הפתרון לשאלה, צריכים ללמוד לחלק לחלקים הכי קטנים שיש, לכן אני אציג כאן רצף של שאלות, מהקל אל הכבד, איך אמורים לגשת לנתח את השאלה הזאת: האם אני יודע
לפתור את השאלה במקרה שיש רק חוק 1 שאומר ש: הסיסמה צריכה להיות באורך של לפחות תו 1 הסיסמה צריכה להיות באורך של לפחות 2 תווים הסיסמה צריכה להיות באורך של לפחות 3 תווים הסיסמה צריכה להיות באורך של לפחות X תווים אם כן, אז האם אני יודע
לפתור את השאלה במידה ו: הסיסמה צריכה להיות באורך של לפחות 6 תווים ועד ... מ תו 1 הסיסמה צריכה להיות באורך של לא יותר מ 2 תווים הסיסמה צריכה להיות באורך של לא יותר מ 3 תווים הסיסמה צריכה להיות באורך של לא יותר מ X תווים אם כן, אז האם אני יודע
לפתור את השאלה במידה ו: הסיסמה צריכה להיות באורך של לא יותר מ 20 ... = 13 ולכן נצטרך למחוק 13 תווים כדי לגרום לסיסמה להיות תקינה. דהיינו, נצטרך לעשות 13 פעולות של מחיקה כדי לגרום לסיסמה להיות תקינה כסיסמה חזקה. ועכשיו נשאל, האם אני יודע
לפתור את השאלה במידה ויש חוק 1 שאומר, שהסיסמה אסור לה להיות פחות מ X ... קטנים. עכשיו נעבור לחוק מספר 2 שאומר שהסיסמה צריכה להכיל לפחות אות 1 קטנה + אות 1 גדולה + מספר 1. וננסה להבין איך אפשרי לחלק את זה לחלקים קטנים. אז נשאל, האם אני יודע
לפתור את השאלה במידה ויש רק חוק 1 שאומר שהסיסמה צריכה להכיל אות 1 ... a הקטנה. דהיינו, לא נשאל על חוק שאומר שהסיסמה צריכה להכיל אות אחת קטנה כלשהי, אלא כן נשאל על מקרה יותר פשוט, שהסיסמה צריכה להכיל אות אחת ספציפית, כי זה מקרה שיותר קל
לפתור. כי יותר קל לדעת אם הסיסמה מכילה אות 1 ספציפית, מאשר לדעת אם ... להפוך להיות 123456Aa או יכול להיות 12345Aa או יכול להיות 1234Aa וכולי. ועכשיו נעבור לחוק מספר 3 שאומר, שסיסמה לא יכולה להכיל 3 תווים או יותר רצופים. ונשאל, האם נדע
לפתור מקרה לדוגמה שאסור שיהיה תו ספציפי רצוף, לדוגמה AAA? והתשובה ... התווים שהסיסמה יכולה להכיל. ועכשיו עלינו לבצע עוד סוג של בדיקות ידניות, ולחלק לחלקים בצורה הבאה: נניח שהיתה רק פעולה אחת אפשרית, פעולה של מחיקה בלבד. האם היינו יודעים
לפתור את כל המצבים? האם היינו יכולים
לפתור פעולות של סיסמה קצרה? תשובה: לא. האם היינו יודעים
לפתור מצב של סיסמה ארוכה: כן. האם היינו יודעים
לפתור מצב של תווים חסרים? תשובה: לא. האם היינו יודעים
לפתור מצב של תווים רצופים? תשובה: כן. ואם היתה רק פעולה אחת אפשרית של הוספה? אז היינו יכולים
לפתור מצב של סיסמה קצרה, לא היינו יכולים
לפתור מצב של סיסמה ארוכה מידי. כן היינו יכולים
לפתור מצב של תווים חסרים או רצופים. ואם היתה רק פעולה אחת אפשרית של החלפה? אז לא היינו יכולים
לפתור בעיה של אורך. אבל כן היינו יכולים
לפתור בעיה של תווים חסרים או רצופים. ואם היו רק 2 פעולות של ...