You have a huge amount of unnecessary duplication in your program. For example the code after
if (sensLreading > 200 && state == "goLeft") {
is the same as the code after
if (sensRreading > 200 && state == "goRight") {
When you see that you should put the code into a function and call the function whenever it is needed.
Duplication opens up scope for silly errors caused by typos and makes it very difficult to mae changes without forgetting the repeat the change somewhere else.
Also you seem to be reading the sensors all over the place - I count 3 repeats of that code. It should only be necessary to read the sensors once in every iteration of loop() - I would also put the sensor code into a function.
The other important advantage of small single-purpose functions is that you can develop and test them independently of the rest of the code.
WHILE blocks the Arduino until it completes. Unless it can complete in a few microseconds I would use IF and allow loop() to look after the iteration.
Rather than using a String to hold the state I would use a char variable and allow it the values 'L', 'R' and 'S'. It is not a good idea to use the String (capital S) class as it can cause memory corruption in the small memory on an Arduino.
...R