题目描述:
题目解读:
给定字符串长度和数组,字符串只包含'a'-'g'七种字符。
求长度为2的不同字符串的个数。
解题思路:
用STL里的set()和map()都可以实现。然后还有一种方法就是使用二维数组,一共只有七种不同字符,最多有49种符合要求的不同字符串。创建数组a[7][7]={0}就够用。
a[0][0]表示‘aa’,a[0][1]表示'ab',a[0][2]表示'ac',即用a[s[i]-'a'][s[i+1]-'a']得到s和a之间的对应。
初始都赋0,然后开始遍历,如果遇到a[s[i]-'a'][s[i+1]-'a']==0,就将其变为1,表示出现了对应字符。
同时计数变量++,遍历完之后输出计数变量即可。
代码实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <iostream>
using namespace std;
void Solve() {
int n;
int i = 0,num=0;
string s;
int a[7][7] = { 0 };
scanf("%d", &n);
cin>>s;
for (i = 0; i < n-1; i++) {
if (a[s[i] - 'a'][s[i + 1] - 'a'] == 0) {
a[s[i] - 'a'][s[i + 1] - 'a'] = 1;
num++;
}
}
printf("%d\n", num);
return;
}
int main() {
int t;
scanf("%d", &t);
while (t--) Solve();
return 0;
}
遇到的错误:有思路但是没动手实现。