כתבו את השיטה:
subStrC המקבלת מחרוזת s ותו c ומחזירה כמה תת-מחרוזות יש ב-s שמתחילות ומסתיימות ב-c ויש בתוכן בדיוק פעם אחת את התו c.
לדוגמא, אם המחרוזת היא s = "abcbcabcacabcc" והתו c = 'c' - התוצאה היא 4. (כי התת-מחרוזות הן: "cabcc", "cacabc", "cabcac", "cbcabc")
כתבו את השיטה:
subStrMaxC המקבלת מחרוזת s ותו c ומספר שלם חיובי k, ומחזירה כמה תת-מחרוזות יש ב-s שמתחילות ומסתיימות ב-c ויש בתוכן מקסימום k פעמים את התו c.
דוגמאות:
s = "abcbc" והתו c = 'c' ו-המספר k=2 התוצאה היא 1. (התת-מחרוזת היא "cbc")"abcdbeabcabc" והתו 'a' ו-המספר k=2 התוצאה היא 6. (התת-מחרוזות הן: "cbcabcac", "cabcac", "cbcabc", "cac", "cabc", "cbc")"abcdbeabcabc" והתו 'a' ו-המספר k=3 התוצאה היא שוב 6. (שכן התת-מחרוזות הן: "cbcabcac", "cabcac", "cbcabc", "cac", "cabc", "cbc"), ואין אף תת-מחרוזת המתחילה בתו 'c' ומסתיימת בתו 'c' ויש בתוכה 3 תווי 'c')s = "abc" והתו c = 'c' ו-המספר k=2 התוצאה היא 0, שכן אין אף תת-מחרוזת שמתחילה ומסתיימת ב-'c'.השיטות צריכות להיות יעילות ככל הניתן, גם מבחינת סיבוכיות הזמן וגם מבחינת סיבוכיות המקום.
ניתן להשתמש אך ורק בשיטות להלן של המחלקה String:
public int length() - מחזירה את אורך המחרוזתpublic char charAt(int index) - מחזירה את התו באינדקס הנתוןs1 = "abcbcabcacabcc", c1 = 'c', s2 = "abcbc", c2 = 'c', k = 0
s= "abcbcabcacabcc", c= 'c', subStrC result: 4 s= "abcbc", c= 'c', k= 0, subStrMaxC result: 1
הסבר: התת-מחרוזת היא "cbc"
s1 = "aabbaaccaa", c1 = 'a', s2 = "abcbcabcacab", c2 = 'c', k = 2
s= "aabbaaccaa", c= 'a', subStrC result: 4 s= "abcbcabcacab", c= 'c', k= 2, subStrMaxC result: 6
s1 = "abcabc", c1 = 'a', s2 = "abcbcabcacab", c2 = 'c', k = 3
s= "abcabc", c= 'a', subStrC result: 0 s= "abcbcabcacab", c= 'c', k= 3, subStrMaxC result: 6
s1 = "abc", c1 = 'c', s2 = "abc", c2 = 'c', k = 2
s= "abc", c= 'a', subStrC result: 0 s= "abc", c= 'c', k= 2, subStrMaxC result: 0
s1 = "aaaa", c1 = 'a', s2 = "cccc", c2 = 'c', k = 0
s= "aaaa", c= 'a', subStrC result: 2 s= "cccc", c= 'c', k= 0, subStrMaxC result: 3
s1 = "hello", c1 = 'z', s2 = "world", c2 = 'x', k = 3
s= "hello", c= 'z', subStrC result: 0 s= "world", c= 'x', k= 3, subStrMaxC result: 0
s1 = "abcdefg", c1 = 'a', s2 = "cbbbbbbc", c2 = 'c', k = 2
s= "abcdefg", c= 'a', subStrC result: 0 s= "cbbbbbbc", c= 'c', k= 2, subStrMaxC result: 1
s1 = "abcdef", c1 = 'a', s2 = "cbbbbb", c2 = 'c', k = 1
s= "abcdef", c= 'a', subStrC result: 0 s= "cbbbbb", c= 'c', k= 1, subStrMaxC result: 0
קלט:
s1 = "abcbcabcacabcc", c1 = 'c', s2 = "abcbc", c2 = 'c', k = 0
הפלט המבוקש:
s= "abcbcabcacabcc", c= 'c', subStrC result: 4 s= "abcbc", c= 'c', k= 0, subStrMaxC result: 1