【发布时间】:2020-09-15 20:00:18
【问题描述】:
我正在做这个练习题,给定一个由小写字母组成的字符串s 和一个位置p,我必须打印在位置p 出现的所有字母,这些字母出现在位置p 之前.
例如:如果字符串是“abaac”且 p=3(基于 1 的索引),则输出为 1,因为 'a' 出现在位置 p 之前一次。
有 q 个查询每个都给我一个位置 p。有没有办法让这段代码更有效率?
我正在使用我认为非常有效的散列?有没有我不知道的算法?
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
string s;
cin>>s;
int q;
cin>>q;
while(q--)
{
int p;
cin>>p;
int freq[26] = {0};
for(int i = 0; i<(p-1); i++)
freq[s[i]-'a']++;
cout<<freq[s[p-1]-'a']<<"\n";
}
}
【问题讨论】:
标签: c++ c++11 hashmap time-complexity