[问题] C/C++字串处理问题

楼主: a106a106 (猜猜我4谁)   2018-09-21 14:00:59
最近练习时写到一个题目
给一个只由两个字符(x、y)组成的字串(不超过30字)
例:xxyxxyxyy
把字串内相同的字划分成一组
变成:xx y xx y x yy,如此就有6个组
再把有两个相同字以上的组删除
例如:xxyxxyxyy→xxyxxyx→xxyyxxx→xxxxx→空字串
题目:随机给定一字串,判断此字串最后能不能变成空字串
列出了很多组字串思考,原本是想找有aba或bab单独存在的字串,但后来发现无论如何都会
有例外,一直找不到可以直接判断的方法,想请问有没有大大对这题有任何想法可以一起讨
论,我想了好几天都想不出来...
谢谢大家QQQ
作者: MOONRAKER (㊣牛鹤鳗毛人)   2018-09-21 14:17:00
就一直跑看会不会变空字串不就好了
作者: s4300026 (s4300026)   2018-09-21 14:48:00
我的想法是存入vector,用for,如果iter值跟下一个相同,就再检查下一个,直至不相同,然后删除中间区块,iter--,iter到底后检查vector是否为空,结案。 值得思考的是,有没有特解是要先消后面一组的,而不能用贪心法解。当我没说,哈哈,你的例子,我的方法就无用了
作者: sarafciel (Cattuz)   2018-09-21 15:10:00
楼上的作法感觉先做一遍reverse后可以解?
作者: a21802 (NEC)   2018-09-21 17:03:00
但是这个你的这个规律会因为消的顺序不同有不同结果
作者: cphe (魔鬼藏在垃圾筒里)   2018-09-21 17:23:00
它应该就是只要找到一个顺序可以全消就算吧
作者: sarafciel (Cattuz)   2018-09-21 17:35:00
楼楼上一讲我才发现原PO给的例子好像两个xx位移了XD
楼主: a106a106 (猜猜我4谁)   2018-09-21 18:30:00
的确是,只要找到可以消完的方法就算可以,而消字串的顺序不需固定
作者: s4300026 (s4300026)   2018-09-21 18:51:00
那我想到第二种做法,Y取代yy,Y左右都是x,则x均取代成X,直至无法取代,检查无小写字就过关。Y左右检查不受大写字影响话说这应该去prob_solve
作者: LPH66 (-6.2598534e+18f)   2018-09-21 19:51:00
楼上一样, 决定取代的顺序会有差
作者: longlongint (华哥尔)   2018-09-21 21:11:00
用 stack哦 原来删的顺序有差 QQ
作者: oToToT (屁孩)   2018-09-22 23:45:00
感觉这不是要发在prob_solve吗?
作者: scott870430   2018-09-23 00:04:00
检查左右是不是相同字符是的话优先消掉?
作者: alan23273850   2018-09-23 10:18:00
这题应该可以用 DP,我有空发文想顺便问大大那题的 judge 在哪,想先确定无 bug
作者: vnon (路人)   2018-09-24 03:11:00
https://i.imgur.com/WYIVLpM.png 能走回中间=>可变成空字串
作者: alan23273850   2018-09-26 19:06:00
楼上水喔~

Links booklink

Contact Us: admin [ a t ] ucptt.com