Multiply elements of the dihedral group
J, 23 bytes
~:/I.@,~4|[:-/1#;._1@,]

Try it online!
Takes a boolean vector where 0 represents r and 1 represents s, and returns the result in the same encoding.
How it works
Imagine evaluating the chunks of \$r^n s r^m s\$ from the start. If we evaluate \$sr\$ in the middle \$m\$ times, we get \$r^{n+3m}s^2 = r^{n+3m}\$. We can repeat the process to the end. Let's represent the input as a sequence of integers which represent the number of \$r\$'s when separated by \$s\$'s, like sssrrr -&gt; [0, 0, 0, 3]. Then the following holds:

The alternating sum ([a, b, c, d, ...] -&gt; a - b + c - d + ...) modulo 4 is the final number of \$r\$'s.
The length plus 1 modulo 2 is the final number of \$s\$'s.

~:/I.@,~4|[:-/1#;._1@,]  NB. Input: a boolean vector
              1#;._1@,]  NB. Get the lengths of runs of r's between s's
        4|[:-/  NB. Alternating sum modulo 4 = the number of final r's
~:/             NB. Reduction by unequal on the original input,
                NB. i.e. the number of s's in the input mod 2
                NB. = the number of final s's
   I.@,~        NB. Reverse concat and generate that many 0's and 1's

Jelly, 15 bytes
ṣ1ẈṚḅ3%4,SḂ$Ø.x

Try it online!
Same algorithm as above. Doesn't feel well golfed to me though; maybe I missed some good alternative built-ins.
ṣ1ẈṚḅ3%4,SḂ$Ø.x  Input: a list of zeros and ones
s1Ẉ              Split at ones, then get length of each chunk
   Ṛḅ3%4         Reverse, evaluate in base 3, modulo 4
        ,        Pair with...
         SḂ$     Sum % 2
            Ø.x  Generate that many zeros and ones respectively