日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ananagram

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ananagram 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Ananagrams

題目鏈接:Ananagrams

題目概述:題目描述的是一種字謎,即不區分大小寫的多個字母,可以按不同的順序組合,都被視為同一個單詞。比如“POST”,“pstO”,“Otsp”…都被視為同一個單詞。題目給了一系列單詞,求出值出現一次的單詞并數次。比如如果存在 “POST”和“pstO”則視為出現兩次。

Input:

ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Rides dealer NotE derail LaCeS drIed noel dire Disk mace Rob dries #

Output:輸出按字典順序(不區分大小寫)排列。

Disk NotE derail drIed eye ladder soon

解題思路:
主要利用map數據結構的 key 唯一性來實現。將每個字符串全部轉為小寫,在用sort進行排序。這樣固定字母的不同大小寫組合最終會被處理為同一個字符串。然后判斷map是否存在該 dict[key],若不存在,則直接保存 dict[key]=原字符串。若存在,則令 dict[key]=”#”。為了按字典序輸出,遍歷 dict 將 value 不等于 ‘#’ 的放入set,在遍歷輸出就OK了。


最終代碼:

#include <iostream> #include <string> #include <map> #include<algorithm> #include <set> using namespace std;int main() {map<string, string> dict;set<string> result;string key;string value;while(cin >> value && value!="#"){key = value;for(unsigned int i = 0; i < key.length(); i++){key[i] = tolower(key[i]);}sort(key.begin(), key.end());pair<map<string, string>::iterator, bool> ret;ret = dict.insert(pair<string, string>(key, value));if(ret.second == false){dict[key]="#";}}for(map<string,string>::iterator it = dict.begin(); it != dict.end(); it++){if(it->second != "#")result.insert(it->second);}for(set<string>::iterator iter = result.begin();iter != result.end();iter++)cout << *iter<<endl;return 0; }

總結

以上是生活随笔為你收集整理的Ananagram的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。