排序
题目描述
给定一组无序的非负整数,每个数都>=32且<=126,将这串整数按照从小到大的顺序排列,并根据每个数对应的ASCII码拼接成字符串。
你需要找到这个字符串中,首次出现另一个字符串的位置(下标从0开始)。若不存在首次出现,则输出-1。
你需要找到这个字符串中,首次出现另一个字符串的位置(下标从0开始)。若不存在首次出现,则输出-1。
输入
第一行输入n,n<=10000;
第二行输入n个非负整数,每个数都>=32且<=126;
第三行输入一个查询字串,长度<=10000。
第二行输入n个非负整数,每个数都>=32且<=126;
第三行输入一个查询字串,长度<=10000。
输出
输出首次出现的位置。
样例输入 Copy
5
65 66 67 66 67
BC
样例输出 Copy
2
提示
65 A
66 B
67 C
生成字符串ABBCC,并查询BC,得位置为2。
66 B
67 C
生成字符串ABBCC,并查询BC,得位置为2。
1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 int a[200]; 5 int main(){ 6 int n; 7 cin >> n; 8 for(int i = 0; i < n; i++){ 9 cin >> a[i]; 10 } 11 sort(a, a + n); 12 string s1 = ""; 13 for(int i = 0; i < n; i++){ 14 s1 += a[i]; 15 } 16 string s2; 17 cin >> s2; 18 int k = s1.find(s2); 19 if(string::npos == k){ 20 cout << "-1"; 21 }else{ 22 cout << k; 23 } 24 return 0; 25 }
浙公网安备 33010602011771号