CSES - Sama merkki

Tehtäväsi on laskea, monessako merkkijonon osajonossa ensimmäinen ja viimeinen merkki on sama. Esimerkiksi merkkijonossa ababca tällaiset osajonot ovat

  • a (kolmesti)
  • aba
  • ababca
  • abca
  • b (kahdesti)
  • bab
  • c

eli yhteensä 10 osajonoa.

Voit olettaa, että merkkijono muodostuu merkeistä az ja siinä on enintään 10^5 merkkiä. Tavoitteena on, että algoritmin aikavaativuus on O(n).

Python

Toteuta tiedostoon bothsame.py funktio count, joka palauttaa halutun tuloksen.

def count(s):
    # TODO

if __name__ == "__main__":
    print(count("aaa")) # 6
    print(count("abcd")) # 4
    print(count("ababca")) # 10

Java

Toteuta tiedostoon BothSame.java metodi count, joka palauttaa halutun tuloksen.

public class BothSame {
    public long count(String s) {
        // TODO
    }

    public static void main(String[] args) {
        BothSame b = new BothSame();
        System.out.println(b.count("aaa")); // 6
        System.out.println(b.count("abcd")); // 4
        System.out.println(b.count("ababca")); // 10
    }
}