ACWING64。最初の文字だけで一度文字列が表示されます(安全プランを証明します)

文字にのみ表示されます初めての文字列を検索するために機能を実装してください。

例えば、文字ストリームは最初の2つの文字を読み取ったときに「行く」、最初の文字は「G」で一度だけ表示されます。

文字ストリームから「グーグル」最初の6つの文字を読み出すときは、最初の文字は「L」で一度だけ表示されます。

現在の文字列が文字がある表示されない場合は、#文字を返します。

サンプル
入力:「グーグル」

出力: "GGG#LL"

説明:毎回文字列は、文字を読み、それが一度決定され、現在の最初の文字は一度しか表示されて出力されます。

:アイデア
力によって、プラスOKでスタック

class Solution{
public:
    //Insert one char from stringstream
    queue<char>Q;
    int vis[200] = {0};
    
    void insert(char ch){
        vis[ch]++;
        if(Q.empty() || vis[ch] == 1) {
            Q.push(ch);   
        }
        while(!Q.empty() && vis[Q.front()] > 1) Q.pop();
    }
    //return the first appearence once char in current stringstream
    char firstAppearingOnce(){
        if(Q.empty()) return '#';
        else return Q.front();
    }
};
公開された844元の記事 ウォン称賛28 ビュー40000 +

おすすめ

転載: blog.csdn.net/tomjobs/article/details/104973427