文字列を見つけます

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/iov3Rain/article/details/90242918

タイトル説明

文字列配列のアレイ上の行があるが、指定された文字列の位置を識別するためのアルゴリズムを設計、いくつかの空の文字列が挿入されています。レベルをログに記録するアルゴリズムの複雑さの一部を検索します。

文字列strの配列を指定し、指定された配列のサイズn及びXながら、文字列、位置(ゼロ位置)に文字列リターンを見つける必要があります。

試験サンプル:

[ "A"、 "B"、 ""、 "C"、 ""、 "D"]、6、 "C"

戻り値:3

 

 

バイナリ検索、ミッドリセット生成方法を変更しました。

ダウン低い位置に高いから中旬に開始、最初の文字列は空ではありません

 

 

class Finder {
public:
    int findString(vector<string> str, int n, string x) {
        // write code here1
        int low = 0;
        int high = str.size() - 1;
        while(low < high)
        {
            int mid;
            for(mid = high; mid >= low; --mid)
                if(str[mid] != "")
                    break;
            if(str[mid] < x)
            {
                low = mid + 1;
            }
            else if(str[mid] > x)
            {
                high = mid - 1;
            }
            else
            {
                return mid;
            }
        }
        return -1;
    }
};

 

おすすめ

転載: blog.csdn.net/iov3Rain/article/details/90242918