每日一題 73 電話號碼 字串 set

2021-09-30 01:31:53 字數 1627 閱讀 8442

上圖是乙個**的九宮格,如你所見乙個數字對應一些字母,因此在國外企業喜歡把**號碼設計成與自己公司名字相對應。例如公司的help desk號碼是4357,因為4對應h、3對應e、5對應l、7對應p,因此4357就是help。同理,tut-glop就代表888-4567、310-gino代表310-4466。

nowcoder剛進入外企,並不習慣這樣的命名方式,現在給你一串**號碼列表,請你幫他轉換成數字形式的號碼,並去除重複的部分。

輸入描述:

輸入包含多組資料。

每組資料第一行包含乙個正整數n(1≤n≤1024)。

緊接著n行,每行包含乙個**號碼,**號碼僅由連字元「-」、數字和大寫字母組成。

沒有連續出現的連字元,並且排除連字元後長度始終為7(美國**號碼只有7位)。

輸出描述:

對應每一組輸入,按照字典順序輸出不重複的標準數字形式**號碼,即「***-***x」形式。

每個**號碼佔一行,每組資料之後輸出乙個空行作為間隔符。

示例:

輸入

124873279

its-easy

888-4567

3-10-10-10

888-glop

tut-glop

967-11-11

310-gino

f101010

888-1200

-4-8-7-3-2-7-9-

487-3279

4utt-help

tut-glop

310-gino

000-1213

輸出310-1010

310-4466

487-3279

888-1200

888-4567

967-1111

000-1213

310-4466

888-4357

888-4567

題意很明確,需要對字元與數字作基本轉換。由於輸入限定只會出現大寫字母和數字,即全部為有效輸入。在接收輸入時對單個**號碼進行操作,遇到字元進行轉換即可,注意第四個位置應該輸入"-",數字進行原樣輸出就可,由於要求了按照字典順序輸出且不重複,可用set來做自動排序輸出。

#include

using

namespace std;

intmain()

else

if(str[j]

>=

'0'&& str[j]

<=

'9')

} data.

insert

(res);}

for(set

::iterator it = data.

begin()

; it != data.

end();

++it)

cout <<

*it << endl;

cout << endl;

}return0;

}

LeetCode每日一題 電話號碼 回溯演算法

輸入法九鍵,每個按鍵都代表著不用的字母,我們需要找到不同字影射,來進行不同序列的組成。如下是leetcode第十七題。給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be...

POJ 1002 電話號碼字串處理

這題比較簡單,就是對 號碼的字串處理並排序輸出,但是實現時有幾個注意的地方 1 用map儲存比較方便,可以自動根據string的排序規則排序,而且題目資料恰好是的k v儲存特點。2 用另乙個字串重新拼接待輸出地字串比直接對輸入字串進行替換移位等操作要方便。3 注意字元和數字的ascii的轉化。4 的...

每日一題 LeetCode之電話號碼的字母組合

給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 思路 典型的回溯演算法,在當前數字所代表的字串中任選乙個字元,再在後面的數字中代表的字串選擇...