牛客網刷題 手機鍵盤

2021-09-13 03:53:45 字數 1098 閱讀 1883

題目描述

按照手機鍵盤輸入字母的方式,計算所花費的時間 如:a,b,c都在「1」鍵上,輸入a只需要按一次,輸入c需要連續按三次。 如果連續兩個字元不在同乙個按鍵上,則可直接按,如:ad需要按兩下,kz需要按6下 如果連續兩字元在同乙個按鍵上,則兩個按鍵之間需要等一段時間,如ac,在按了a之後,需要等一會兒才能按c。 現在假設每按一次需要花費乙個時間段,等待時間需要花費兩個時間段。 現在給出一串字元,需要計算出它所需要花費的時間。

輸入描述:

乙個長度不大於100的字串,其中只有手機按鍵上有的小寫字母

輸出描述:

輸入可能包括多組資料,對於每組資料,輸出按出input所給字串所需要的時間

分析:輸入的字元用string s 變數儲存;

得到字串變數 s 的長度:len=s.length();

可以對字串變數中某一字元進行操作:string word = 「then」; word[2] = 『a』; 就像對陣列操作一樣;

使用兩個陣列,第乙個為了表示乙個按字母需要的時間,如1,2,3,另乙個陣列表示該字母所在的數字,如1, 1,1 ,用來判定該字母與他前面的字母是否在同一數字上,如果在,就要加兩個等待時間;

需要乙個char型變數儲存上乙個字母;

字母在進行考察時,需要轉換成數字的形式,由於字元跟數字在儲存上是同樣的方式,直接str[i]-『a』 就可以得到該字元對應的陣列中的位置,感受一下;

**:提交時出現過的錯:

① 陣列初始化結尾有乙個分號;

② 每次 string 這個詞都寫錯;

需要特別注意的:

int a1 =s[i]-'a';

int a2 =pre-'a';

if(number[a1]==number[a2])

time+=2;

time+=eachtime[a1];
**:

#include#includeusing namespace std;

int main();

int number=;

while(cin>>s)

cout<}

}

牛客網刷題

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 立華奏在學習初中數學的時候遇到了這樣一道大水題 設箱子內有 n 個球,其中給 m 個球打上標記,設一次摸球摸到每乙個球的概率均等,求一次摸球摸到打標記的球的概率 e...

牛客網刷題

時間限制 c c 2秒,其他語言4秒 空間限制 c c 524288k,其他語言1048576k 64bit io format lld 立華奏是乙個剛剛開始學習 oi 的萌新。最近,實力強大的 qingyu 當選了 iods 9102 的出題人。眾所周知,iods 是一場極其毒瘤的比賽。為了在這次...

牛客網刷題筆記

今天在牛客網刷了一道求最長字串是回文數的長度,剛開始的時候,我用兩個指標,乙個指前邊,乙個指後邊,對比兩個指標指向的值,相等則前邊的指標後移,後邊的指標前移,然後再判斷是否相等,如果不相等,那麼就不是回文數,前邊的指標回到第一次開始的地方,後邊的指標回到第一次開始的地方,前邊的指標再自加後移移位,然...