【java練習】SDUT 2618 手機鍵盤
阿新 • • 發佈:2018-11-26
Problem Description
大家應該都見過那種九鍵的手機鍵盤,鍵盤上各字母的分佈如下圖所示。
當我們用這種鍵盤輸入字母的時候,對於有些字母,往往會需要按多次鍵才能輸入。
比如:a, b, c 都在“2”鍵上,輸入 a 只需要按一次,而輸入 c 需要連續按三次。
連續輸入多個字母的規則如下:
1、如果前後兩個字母不在同一個按鍵上,則可在輸入前一個字母之後直接輸入下一個字母,如:ad 需要按兩次鍵盤,kz 需要按 6 次。
2、如果前後兩個字母在同一個按鍵上,則輸入完前一個字母之後需要等待一段時間才能輸入下一個字母,如ac,在輸入完 a 之後,需要等一會兒才能輸入 c。
現在假設每按一次鍵盤需要花費一個時間段,等待時間需要花費兩個時間段。
現在給出一串只包含小寫英文字母的字串,計算出輸入它所需要花費的時間。
Input
輸入包含多組測試資料,對於每組測試資料:輸入為一行只包含小寫字母的字串,字串長度不超過100。
Output
對於每組測試資料,輸出需要花費的時間。
Sample Input
bob
www
Sample Output
7
7
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); while (s.hasNext()) { String str[] = { new String("abc"), new String("def"), new String("ghi"), new String("jkl"), new String("mno"), new String("pqrs"), new String("tuv"), new String("wxyz") }; String v = s.nextLine(); char[] a = v.toCharArray(); int n = v.length(); int sum = 0, f = -1; for (int i = 0; i < n; i++) for (int j = 0; j < 8; j++) for (int k = 0; k < str[j].length(); k++) //這裡!要關注有的鍵盤管3個字母,有的是四個,所以k不能設定成定值。 if (a[i] == str[j].charAt(k)) { sum += k + 1; if (f == j) sum += 2; f = j; break; } System.out.println(sum); } s.close(); } }