Tehtäväsi on laskea, monessako merkkijonon osajonossa jokainen merkki on sama. Esimerkiksi merkkijonossa abbbcaa
tällaiset osajonot ovat
a
(kolmesti)aa
b
(kolmesti)bb
(kahdesti)bbb
c
eli yhteensä 11 osajonoa.
Voit olettaa, että merkkijono muodostuu merkeistä a
–z
ja siinä on enintään 10^5 merkkiä. Tavoitteena on, että algoritmin aikavaativuus on O(n).
Python
Toteuta tiedostoon onechar.py
funktio count
, joka palauttaa halutun tuloksen.
def count(s): # TODO if __name__ == "__main__": print(count("aaa")) # 6 print(count("abbbcaa")) # 11 print(count("abcde")) # 5
Java
Toteuta tiedostoon OneChar.java
metodi count
, joka palauttaa halutun tuloksen.
public class OneChar { public long count(String s) { // TODO } public static void main(String[] args) { OneChar o = new OneChar(); System.out.println(o.count("aaa")); // 6 System.out.println(o.count("abbbcaa")); // 11 System.out.println(o.count("abcde")); // 5 } }