C++ 二分查找查询指定首字母出现的第一个位置
如果输入b,就代表查询首字母为b出现的第一个位置,即0
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string words[] = {"b", "bb", "ce", "dc", "de"};
int _find(int l, int r, char ch) {
if (l >= r) {
if (words[l][0] == ch) {
return l;
} else {
return -1;
}
}
int mid = (l + r) / 2;
if (ch <= words[mid].at(0)) {
return _find(l, mid, ch);
} else {
return _find(mid + 1, r, ch);
}
}
int main() {
char ch;
sort(words.begin(), words.end());
while (cin >> ch)
cout << _find(0, 4, ch) << endl;
}