Tehtäväsi on laskea, monessako merkkijonon osajonossa on tasan kahta eri merkkiä. Esimerkiksi merkkijonossa aabacba
tällaiset osajonot ovat
aab
aaba
ab
aba
ac
ba
(kahdesti)cb
eli yhteensä osajonoa.
Voit olettaa, että merkkijono muodostuu merkeistä a
–z
ja siinä on enintään merkkiä. Tavoitteena on, että algoritmin aikavaativuus on .
Python
Toteuta tiedostoon twochar.py
funktio count
, joka ilmoittaa osajonojen määrän.
def count(s): # TODO if __name__ == "__main__": print(count("aaaa")) # 0 print(count("abab")) # 6 print(count("aabacba")) # 8 print(count("abacaadbaacaa")) # 21
Java
Toteuta tiedostoon TwoChar.java
metodi count
, joka ilmoittaa osajonojen määrän.
public class TwoChar { public long count(String s) { // TODO } public static void main(String[] args) { TwoChar t = new TwoChar(); System.out.println(t.count("aaaa")); // 0 System.out.println(t.count("abab")); // 6 System.out.println(t.count("aabacba")); // 8 System.out.println(t.count("abacaadbaacaa")); // 21 } }