posts - 61,  comments - 2033,  trackbacks - 0

          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)

           

           

           1public class CursorPosition
           2{
           3
           4        public int getPosition(String ks,int len)
           5        {
           6                int pos = 0;
           7                char c ;
           8                for(int i=0;i<ks.length();i++)
           9                {
          10                        c = ks.charAt(i);
          11
          12                        if(c=='E')
          13                        {
          14                                pos = len;
          15                        }

          16                        else if(c=='H')
          17                        {
          18                                pos = 0;
          19                        }

          20                        else if(c=='L')
          21                        {
          22                                if(pos>0)
          23                                {
          24                                  pos--;
          25                            }

          26                        }

          27                        else if(c=='R')
          28                        {
          29                                if(pos<len)
          30                                {
          31                                  pos++;
          32                            }

          33
          34                        }

          35                }

          36
          37        return pos;
          38        }

          39
          40}
          posted on 2005-11-28 10:38 魚(yú)上游 閱讀(1228) 評(píng)論(4)  編輯  收藏 所屬分類: 爪哇世界探險(xiǎn)


          FeedBack:
          # re: GOOGLE挑戰(zhàn)賽練習(xí)題3及答案(1000分)
          2005-11-29 16:08 | superwu
          public class CursorPosition {
          public int getPosition(String keystrokes, int N){
          int current=0;
          int end=N;
          int start=0;


          for(int i=0;i<keystrokes.length();i++){
          char c=keystrokes.charAt(i);
          switch(c){
          case 'L':
          if(current!=start)current--;break;
          case 'R':
          if(current!=end)current++;break;
          case 'H':
          current=0;break;
          case 'E':
          current=N;break;
          }
          }
          return current;
          }
          public static void main(String[] args) {
          CursorPosition c=new CursorPosition2();
          System.out.println(c.getPosition("ERLLL",10));
          }

          }
          這道題和你做的幾乎一樣,效率上應(yīng)該沒(méi)有太大差別
          但我的了920多分,我覺(jué)的是時(shí)間的原因,這道題我做的很快就提交了  回復(fù)  更多評(píng)論
            
          # re: GOOGLE挑戰(zhàn)賽練習(xí)題3及答案(1000分)
          2005-11-29 16:13 | 胡子魚(yú)
          呵,是的,時(shí)間也是評(píng)分的一個(gè)重要因素。   回復(fù)  更多評(píng)論
            
          # re: GOOGLE挑戰(zhàn)賽練習(xí)題3及答案(1000分)
          2005-12-02 14:50 | space
          不行阿,all the same  回復(fù)  更多評(píng)論
            
          # re: GOOGLE挑戰(zhàn)賽練習(xí)題3及答案(1000分)
          2005-12-09 12:34 | emu
          沒(méi)有優(yōu)化。其實(shí)可以直接定位到最后一次出現(xiàn)的“H”或者“E”的位置開(kāi)始計(jì)算的。  回復(fù)  更多評(píng)論
            
          <2005年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(82)

          隨筆分類(59)

          文章分類(21)

          相冊(cè)

          收藏夾(40)

          GoodSites

          搜索

          •  

          積分與排名

          • 積分 - 1268166
          • 排名 - 22

          最新評(píng)論

          閱讀排行榜

          主站蜘蛛池模板: 安阳县| 隆化县| 大理市| 通山县| 广南县| 白河县| 安徽省| 内江市| 邢台市| 兰溪市| 绵竹市| 永宁县| 洛浦县| 蚌埠市| 辉南县| 休宁县| 闸北区| 高密市| 上杭县| 慈溪市| 公主岭市| 永嘉县| 多伦县| 周至县| 宜章县| 丹阳市| 江孜县| 丹棱县| 阿巴嘎旗| 武川县| 乐昌市| 乐东| 饶平县| 鹿泉市| 麻城市| 仁寿县| 高雄市| 棋牌| 绥滨县| 洪湖市| 来凤县|