字元串去重復高效演算法
A. 如何設計一個高效演算法,找到第一次重復出現的字元
定義字元串類的映射map類,建立map類對象。通過循環讀入字元串到映射對象,遍歷映射對象的迭代器,統計字元串出現次數,輸出字元串和出現次數。給你個例子吧:
#include <iostream>#include <fstream>#include <map>#include <string>using namespace std ;int main ( int argc, char* argv [ ] ) { typedef map < string , int > WordMap ; // 定義特定的字元串映射類型 typedef WordMap :: iterator wmIter ; // 定義該類型的迭代器 const char* fname = "city.txt" ; // 預設文件名串 if ( argc > 1 ) fname = argv [ 1 ] ; // 讀入命令行的第一個參數,作為文件名路徑串 ifstream in ( fname ) ; // 打開文件輸入流 if ( ! in ) { // 如果打開錯誤,則顯示提示信息後退出 cout << " Open file " << fname << " error ! " << endl ; system("pause"); return 1 ; } WordMap wordmap ; // 定義單詞映射對象 string word ; // 定義單詞字元串對象 while ( in >> word ) wordmap [ word ] ++ ; // 從文件中讀入單詞 // 遍歷容器,顯示輸出計數大於等於2的單詞和計數 for ( wmIter w = wordmap . begin ( ) ; w != wordmap . end ( ) ; w ++ ) if ( w->second >= 2 ) cout << w->first << " : " << w->second << endl ; system("pause"); return 0 ;}