我收到超过时间限制?
类似 Char 问题描述 Tahir 和 Mamta 正在 TCS 中的一个项目中工作。Tahir 是一个问题解决者,他为他的朋友 Mamta 想出了一个有趣的问题。
问题由一个长度为 N 的字符串组成,并且只包含小写字母。
接下来是 Q 个查询,其中每个查询将包含一个整数 P (1<=P<=N),表示字符串中的一个位置。
Mamta 的任务是找到该位置出现的字母表,并确定给定位置 P 之前相同字母表的出现次数。
Mamta 正忙于她的办公室工作。因此,她请求你帮助她。
约束 1 <= N <= 500000
S 由小写字母组成
1 <= Q <= 10000
1 <= P <= N
输入格式 第一行有一个整数N,表示字符串的长度。
第二行包含字符串 S 本身仅包含小写字母 ('a' - 'z')。
第三行包含一个整数 Q,表示将被询问的查询数。
接下来的 Q 行包含一个整数 P (1 <= P <= N),您需要为此查找 P 之前第 P 个位置出现的字符的出现次数。
输出 对于每个查询,在单行上打印一个表示答案的整数。
测试用例
说明例1
输入
9
算盘
2
9
3
输出
3
1
解释
这里 Q = 2
对于 P=9,第 9 个位置的字符是 'a'。P 之前'a' 的出现次数,即9 是3。
类似地,对于 P=3,第 3 个字符是 'a'。P 之前'a' 的出现次数。即3 是一次。
import java.io.*;
public class simchar
{
public static void main(String gg[]) throws Exception
{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(reader.readLine());
String s=reader.readLine();
if(s.length()!=n) return;
int q=Integer.parseInt(reader.readLine());
int qq;
int []count=new int[q];
char someChar;
for(int j=0;j<q;j++)
{
qq=Integer.parseInt(reader.readLine());
someChar=s.charAt(qq-1);
for(int k=0;k<s.substring(0,qq-1).length();k++){
if((s.substring(0,(qq-1)).charAt(k)==someChar)) count[j]++;
}
System.out.println(count[j]);
}
reader.close();
}
}
扬帆大鱼
达令说
相关分类