emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評論 :: 2 Trackbacks


          Problem Statement
          ????
          When editing a single line of text, there are four keys that can be used to move the cursor: end, home, left-arrow and right-arrow. As you would expect, left-arrow and right-arrow move the cursor one character left or one character right, unless the cursor is at the beginning of the line or the end of the line, respectively, in which case the keystrokes do nothing (the cursor does not wrap to the previous or next line). The home key moves the cursor to the beginning of the line, and the end key moves the cursor to the end of the line.  You will be given a int, N, representing the number of character in a line of text. The cursor is always between two adjacent characters, at the beginning of the line, or at the end of the line. It starts before the first character, at position 0. The position after the last character on the line is position N. You should simulate a series of keystrokes and return the final position of the cursor. You will be given a String where characters of the String represent the keystrokes made, in order. 'L' and 'R' represent left and right, while 'H' and 'E' represent home and end.
          Definition
          ????
          Class:
          CursorPosition
          Method:
          getPosition
          Parameters:
          String, int
          Returns:
          int
          Method signature:
          int getPosition(String keystrokes, int N)
          (be sure your method is public)
          ????

          Constraints
          -
          keystrokes will be contain between 1 and 50 'L', 'R', 'H', and 'E' characters, inclusive.
          -
          N will be between 1 and 100, inclusive.
          Examples
          0)

          ????
          "ERLLL"
          10
          Returns: 7
          First, we go to the end of the line at position 10. Then, the right-arrow does nothing because we are already at the end of the line. Finally, three left-arrows brings us to position 7.
          1)

          ????
          "EHHEEHLLLLRRRRRR"
          2
          Returns: 2
          All the right-arrows at the end ensure that we end up at the end of the line.
          2)

          ????
          "ELLLELLRRRRLRLRLLLRLLLRLLLLRLLRRRL"
          10
          Returns: 3

          3)

          ????
          "RRLEERLLLLRLLRLRRRLRLRLRLRLLLLL"
          19
          Returns: 12

          This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.



          沒有難度

          public class CursorPosition {
          public int getPosition(String keystrokes, int N){
              
          int p = 0;
              
          if(keystrokes.lastIndexOf("H")>-1)
                  keystrokes
          =keystrokes.substring(keystrokes.lastIndexOf("H")+1);
              
          if(keystrokes.lastIndexOf("E")>-1){
                  keystrokes
          =keystrokes.substring(keystrokes.lastIndexOf("E")+1);
                  p
          =N;
              }

              
          for(int i=0;i<keystrokes.length();i++){
                  
          if(keystrokes.charAt(i)=='R')
                      p
          +=(p<N)?1:0;
                  
          else 
                      p
          -=(p>0)?1:0;
              }

              
          return p;
          }

          public static void main(String[] args){
              System.out.println(
          new CursorPosition().getPosition("ERLLL",10));
              System.out.println(
          new CursorPosition().getPosition("EHHEEHLLLLRRRRRR",2));
              System.out.println(
          new CursorPosition().getPosition("ELLLELLRRRRLRLRLLLRLLLRLLLLRLLRRRL",10));
              System.out.println(
          new CursorPosition().getPosition("RRLEERLLLLRLLRLRRRLRLRLRLRLLLLL",19));
              System.out.println(
          new CursorPosition().getPosition("R",9));

          }

          }

          posted on 2005-12-01 16:57 emu 閱讀(1607) 評論(6)  編輯  收藏 所屬分類: google編程大賽模擬題及入圍賽真題

          評論

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-06 21:31 Merlin Ran
          這樣的題就不用拿來現(xiàn)眼了吧。要真的比賽時,這題也就值100分。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-06 22:17 emu
          就是啊,這次中國錦標(biāo)賽的模擬題比上次東亞大賽的模擬題差的太遠(yuǎn)了,完全沒有挑戰(zhàn)性。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-07 21:30 Merlin Ran
          我今天一直在后悔上面的評論,還好看來你沒生氣。
          這題就是讓大家熟悉比賽環(huán)境的,肯定不代表入圍賽的題目難度。真正的題恐怕不會比NewStation更容易。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-08 00:45 emu
          呵呵,對自己有信心,就不會理解成自己現(xiàn)眼了。不過這樣的模擬題對沒看過以前的題目的人有很強(qiáng)的誤導(dǎo)性,都以為1000分就這么好拿,到時就傻眼了。懷疑google想多蒙些人來捧場。
          此外這道題我第一次做也是做錯了的(現(xiàn)眼了),在系統(tǒng)自動測試的時候才發(fā)現(xiàn),原來位置是從0到n,不是從1到n。所以題目容易也要仔細(xì)讀題。上次東亞大賽的時候有一道題就是沒有搞清楚輸出結(jié)果是要排序的丟了分。  回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-10 00:24 小飛俠
          public class CursorPosition {
          public static int getPosition(String commonds, int ncount) {
          //獲取開始查詢的位置
          int fromIndex1, fromIndex2, fromIndex, position;

          fromIndex1 = commonds.lastIndexOf((int)'E');
          fromIndex2 = commonds.lastIndexOf((int)'H');
          if (fromIndex1 > fromIndex2) {
          fromIndex = fromIndex1 >0 ? fromIndex1 : 0;
          position = ncount;
          } else {
          fromIndex = fromIndex2 > 0 ? fromIndex2 : 0;
          position = 0;
          }

          //取字符串的字符,開始進(jìn)行統(tǒng)計
          for (int i = fromIndex + 1; i < commonds.length(); i++) {
          System.out.println(commonds.charAt(i));
          switch(commonds.charAt(i)) {
          case 'L' :
          position = (position == 0) ? 0 : --position;
          break;
          case 'R' :
          position = (position == ncount) ? ncount : ++position;
          break;
          default :
          break;
          }
          }

          return position;
          }
          }   回復(fù)  更多評論
            

          # re: google中國編程挑戰(zhàn)賽模擬題 -- CursorPosition(1000分) 2005-12-10 00:27 小飛俠
          //簡單的方法
          public class CursorPosition {
          public int getPosition(String commonds, int ncount) {
             int position = 0;
          for (int i = 0; i < commonds.length(); i++) {
          switch(commonds.charAt(i)) {
          case 'H' :
          position = 0;
          break;
          case 'E' :
          position = ncount;
          break;
          case 'R' :
          position = position < ncount ? positon++ : ncount;
          break;
          case 'L' :
          position = position >0 ? position-- : 0;
          break;
          default :
          break;
          }
          } 

          return position;    
            }
          }  回復(fù)  更多評論
            

          主站蜘蛛池模板: 永德县| 盐亭县| 阿巴嘎旗| 灵台县| 精河县| 河南省| 盐城市| 甘德县| 淮滨县| 治多县| 九台市| 万年县| 荆州市| 临夏县| 鄄城县| 佛冈县| 武宣县| 个旧市| 左权县| 搜索| 于田县| 边坝县| 夏邑县| 隆安县| 华容县| 通化县| 定边县| 榕江县| 上饶县| 延边| 红原县| 汾阳市| 鲁甸县| 无为县| 永宁县| 会昌县| 阳东县| 华宁县| 通道| 台安县| 佳木斯市|