Может ли кто-нибудь сказать мне регулярное выражение для данного языка? - PullRequest
0 голосов
/ 18 сентября 2018

все строки, содержащие четное число 0 или четное число 1 с . Здесь я спрашиваю о "или" не "и".

Я придумал это: (1 * 01 * 0) * | (0 * 10 * 1) * пока ... но это кажется мне неправильным, потому что, когда вы рисуете DFA для вышеупомянутый язык вы можете даже принять 111 или 000.

1 Ответ

0 голосов
/ 18 сентября 2018

Для нулей допускается любое количество пар нулей с любым количеством ведущих ненулевых и разделяющих ненулевых. И затем разрешить любые конечные ненули. Если строка не соответствует этому шаблону, она имеет нечетное число нулей.

(1*01*0)*1*

И чтобы сделать это для нулей или единиц, просто скопируйте вместо него 1 s и добавьте его как альтернативу всему.

(1*01*0)*1*|(0*10*1)*0*

Кроме того, 111 и 000 оба правильно удовлетворяют условию, поскольку 111 имеет четное число 0 с, а 000 имеет четное число 1 с. Примеры, которые не должны работать, будут 1101 или 011100.

...