華為上機試題

來源:互聯網
上載者:User

標籤:style   blog   java   strong   for   ar   div   line   

一、題目描述:
通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫一個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。
比如字串“abacacde”過濾結果為“abcde”。

    public String stringFilter(String str) {    Map<String, Integer> map = new LinkedHashMap<String, Integer>();        String s = "";    for(int i=0; i<str.length(); i++) {    s = String.valueOf(str.charAt(i));    if(map.keySet().contains(s))         map.put(s, map.get(s)+1);    else     map.put(s, 1);    }    String _str = "";    for(Map.Entry<String, Integer> entry : map.entrySet()) {    _str += entry.getKey();         }    return _str;    }

    -- 這裡要注意,HashMap中元素的遍曆順序,並非按輸入順序,而是按“有利於隨機尋找的散列(hash)的順序”。

    -- LinkedHashMap 是按加入時的順序遍曆,類似的還有LinkedHashSet。

 

二、題目描述:
通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫一個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。
壓縮規則:
1、僅壓縮連續重複出現的字元。比如字串"abcbc"由於無連續重複字元,壓縮後的字串還是"abcbc"。
2、壓縮欄位的格式為"字元重複的次數+字元"。例如:字串"xxxyyyyyyz"壓縮後就成為"3x6yz"。

    public String stringZip(String str) {         String _str = "";            int i = 0;   //遊標位置    char c;      //遊標字元    while(i<str.length()) {        int n = 1;   //相鄰相同字元的個數    c = str.charAt(i);    for(int j=i+1; j<str.length(); j++) {    char _c = str.charAt(j);    if(c==_c) {    n++;    } else {    break;    }    }        if(n==1) {    _str += c;    } else if(n>1){    _str += String.valueOf(n) + c;     }    i += n; //遊標位置    }        return _str;     }

  

 

三、題目描述: 
通過鍵盤輸入100以內正整數的加、減、乘、除運算式,請編寫一個程式輸出運算結果字串。
輸入字串的格式為:“運算元1 運算子 運算元2”,“運算元”與“運算子”之間以一個空格隔開。

補充說明:
1、運算元為正整數,不需要考慮計算結果溢出的情況。
2、若輸入算式格式錯誤,輸出結果為“0”。

    public int arithmetic(String str) {    String[] strArr = str.split(" ");        if(strArr.length!=3 || !isNumeric(strArr[0]) || !isNumeric(strArr[2])) {    return 0;    }        String operator = strArr[1];  //運算子    int leftInt = Integer.valueOf(strArr[0]);   //左運算元    int rightInt = Integer.valueOf(strArr[2]);  //右運算元        int i = 0;    if("+".equals(operator)) {    i = leftInt + rightInt;    } else if("-".equals(operator)) {    i = leftInt - rightInt;    } else if("*".equals(operator)) {    i = leftInt * rightInt;    } else if("/".equals(operator)) {    i = leftInt / rightInt;    }         return i;     }            //判斷字串是否可轉化為數字    public static boolean isNumeric(String str){        for (int i=0; i<str.length(); i++){           if (!Character.isDigit(str.charAt(i))){            return false;        }    }    return true;    }

  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.