Tehtäväsi on laskea, monessako merkkijonon osajonossa on tasan kahta eri merkkiä. Esimerkiksi merkkijonossa aabacba tällaiset osajonot ovat
aabaabaababaacba(kahdesti)cb
eli yhteensä 8 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 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
    }
}
