將Java進行到底
          將Java進行到底
          posts - 15,  comments - 66,  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)
              

          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.

          答案:


           1
           2public class CursorPosition {
           3    public int getPosition(String keystrokes, int N){
           4        int position = 0;
           5        String s = "";
           6        for(int i = 0; i < keystrokes.length(); i++){
           7            s = keystrokes.substring(i, i+1);
           8            if("L".equals(s)){
           9                if(position == 0continue;
          10                position--;
          11            }

          12            if("R".equals(s)){
          13                if(position == N) continue;
          14                position++;
          15            }

          16            if("H".equals(s)){
          17                position = 0;
          18            }

          19            if("E".equals(s)){
          20                position = N;
          21            }

          22
          23        }

          24
          25        return position;
          26
          27    }

          28    /**
          29     * @param args
          30     */

          31    public static void main(String[] args) {
          32        CursorPosition cursorPosition = new CursorPosition();
          33        int cursor = cursorPosition.getPosition("ERLLL"10);
          34        System.out.println("cursor:" + cursor);
          35    }

          36
          37}

          38
          posted on 2005-11-27 23:42 風蕭蕭 閱讀(940) 評論(2)  編輯  收藏 所屬分類: 雜談

          FeedBack:
          # re: GOOGLE挑戰(zhàn)賽練習題3及答案
          2005-11-29 13:13 | jackj
          應(yīng)該可以做一些優(yōu)化,如,
          輸入字符串從后往前查,如果碰到'E'或'H',則以后的就不用執(zhí)行了。
          例如'ERLLLHRL',查到倒數(shù)第三個字符是'H',在前面的'ERLLL'都可以忽略。  回復(fù)  更多評論
            
          # re: GOOGLE挑戰(zhàn)賽練習題3及答案
          2005-11-29 13:53 | 風蕭蕭
          有道理,說得對。
          謝謝jackj.  回復(fù)  更多評論
            

          <2005年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(8)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          myfriends

          opensource

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 苗栗县| 英德市| 绥德县| 宣化县| 吕梁市| 文昌市| 肃南| 扬中市| 沅陵县| 曲麻莱县| 乐陵市| 托里县| 灵武市| 肇源县| 鹤岗市| 陈巴尔虎旗| 武威市| 松原市| 民丰县| 汉源县| 邻水| 郁南县| 济阳县| 东丰县| 忻州市| 武隆县| 修水县| 峡江县| 新源县| 姜堰市| 榕江县| 台湾省| 江阴市| 武城县| 察雅县| 天峻县| 怀来县| 涿州市| 双鸭山市| 阆中市| 纳雍县|