[問題] 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