笨方法:)
你设个标志,输入一个普通字符加1,backspace键和del键记为-1,移动方向键和空格键记为0;
如,例中的str1为wang,长度为4,
    w <-b w a n g g g <-b <- del  字符对应的值分别为:
    1  -1 1 1 1 1 1 1  -1 0   -1
当累计到第一个字母g时标志就为4了,但这时你应该继续往后计算,到del时标志又为4了,再往后计算,直到标志不能再小于等于4为止,最后一次为4时的位置就是str1的结束位置。这样依次类推
临时想的法,莫见笑:)

解决方案 »

  1.   

    weixiao() 
    用你这种办法效率太低了,每计算一个词位置的都要从新序列的开始判断到尾部(虽然序列一次比一次短),难道没有更好的办法吗?
      

  2.   

    1. 将所有操作入栈A
    2. 建立栈B,用于保存无法执行的左移,退格操作
    3. 建立一个buf用于保存将要pop出的操作组成的字符串
    4. 检查B的栈顶操作对于buf是否可执行,
       如可以,则执行,goto 4
    5. B栈顶的操作不能执行,
       如栈A为空,goto 6
       栈A非空,pop A
         如为字符,加入到buf的首部,
           如果此时buf组成的词与输出序列的最后一个词相同,且栈B为空,
               得到最后一个词的首尾位置,从输出序列中删除该词,goto 4
         如为退格等操作,压入栈,goto 4
    6. the end要睡觉了,写得比较乱,不过应该是可以用的。