סעיף א
נתונה הפעולה secret הבאה המקבלת שתי מחרוזות:
public static boolean secret(String s1, String s2)
{
if(s1.equals(s2)) return false;
while(s1.length() != 0 && s2.length() != 0)
{
int pos = s2.indexOf(s1.charAt(0));
if(pos == -1) return false;
s1 = s1.substring(1);
s2 = s2.substring(0,pos) + s2.substring(pos+1);
}
return s1.length() == 0;
}
- תנו דוגמה למחרוזת s2 באורך של שישה תווים שעבורה הפעולה secret("HELLO!", s2) תחזיר ערך true.
- נתונה הטענה הבאה: אם זימון הפעולה secret(s1, s2) מחזיר ערך true, גם זימון הפעולה secret(s2, s1) יחזיר ערך true. האם הטענה נכונה? הסבירו את תשובתכם.
- מה מבצעת הפעולה secret באופן כללי?
סעיף ב
נתונה הפעולה mystery המקבלת מערך מחרוזות. הפעולה משתמשת בפעולה secret:
public static boolean mystery(String[] arr)
{
for (int i = 0; i<arr.length -1; i+=2)
{
if (!secret(arr[i], arr[i+1]))
return false;
}
return true;
}
- תנו דוגמה למערך arr בגודל שישה תאים שעבורו הפעולה mystery תחזיר ערך true.
- נתונה הטענה הבאה: אם זימון הפעולה mystery(arr) מחזיר ערך true, המערך arr לא כולל זוג מחרוזות זהות אשר נמצאות בתאים סמוכים. האם הטענה נכונה? הסבירו את תשובתכם.
- מהי הסיבוכיות של הפעולה mystery? הסבירו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.