ספירת תתי-מחרוזות

כתבו את השיטה:

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) - מחזירה את התו באינדקס הנתון
דוגמה 1:
קלט:
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"

דוגמה 2:
קלט:
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
דוגמה 3:
קלט:
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
דוגמה 4:
קלט:
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
דוגמה 5:
קלט:
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
דוגמה 6:
קלט:
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
דוגמה 7:
קלט:
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
דוגמה 8:
קלט:
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
Loading...
נשמרLn 1, Col 1

קלט:

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