手机键盘_JAVA
Description
大家應該都見過那種九鍵的手機鍵盤,鍵盤上各字母的分布如下圖所示。
當我們用這種鍵盤輸入字母的時候,對于有些字母,往往會需要按多次鍵才能輸入。
比如:a, b, c 都在“2”鍵上,輸入 a 只需要按一次,而輸入 c 需要連續按三次。
連續輸入多個字母的規則如下:
1、如果前后兩個字母不在同一個按鍵上,則可在輸入前一個字母之后直接輸入下一個字母,如:ad 需要按兩次鍵盤,kz 需要按 6 次。
2、如果前后兩個字母在同一個按鍵上,則輸入完前一個字母之后需要等待一段時間才能輸入下一個字母,如 ac,在輸入完 a 之后,需要等一會兒才能輸入 c。
現在假設每按一次鍵盤需要花費一個時間段,等待時間需要花費兩個時間段。
現在給出一串只包含小寫英文字母的字符串,計算出輸入它所需要花費的時間。
Input
輸入包含多組測試數據,對于每組測試數據:
輸入為一行只包含小寫字母的字符串,字符串長度不超過100。
Output
對于每組測試數據,輸出需要花費的時間。
Sample
Input
bob
www
Output
7
7
Hint
import java.util.Scanner;class Phone {public int sign(char x) {if (x >= 'a' && x <= 'c')return 2;else if (x >= 'd' && x <= 'f')return 3;else if (x >= 'g' && x <= 'i')return 4;else if (x >= 'j' && x <= 'l')return 5;else if (x >= 'm' && x <= 'o')return 6;else if (x >= 'p' && x <= 's')return 7;else if (x >= 't' && x <= 'v')return 8;elsereturn 9;}public int tim(char x) {int y = 0;if (x == 'a' || x == 'd' || x == 'g' || x == 'j' || x == 'm' || x == 'p' || x == 't' || x == 'w')y = 1;else if (x == 'b' || x == 'e' || x == 'h' || x == 'k' || x == 'n' || x == 'q' || x == 'u' || x == 'x')y = 2;else if (x == 'c' || x == 'f' || x == 'i' || x == 'l' || x == 'o' || x == 'r' || x == 'v' || x == 'y')y = 3;else if (x == 's' || x == 'z')y = 4;return y;} } public class Main {public static void main(String[] args) {Scanner reader = new Scanner(System.in);String str;while (reader.hasNext()) {Phone phone = new Phone();int t = 0;str = reader.nextLine();char s[] = str.toCharArray();for (int i = 0; i < s.length; i++)t += phone.tim(s[i]);for (int i = 1; i < s.length; i++) {if (phone.sign(s[i]) == phone.sign(s[i - 1]))t += 2;}System.out.println(t);}reader.close();} }總結
- 上一篇: 分数四则运算_JAVA
- 下一篇: 正方形_JAVA