记在前面
看网上的评论,说这个东东是外包的。我的态度是先试试吧。
一面,在线机试
。。今天卡在一个低级语法错误上,导致最后过了40%,真是智障。。
题目是:找出一个字符串中出现次数最多的字符,并输出该字符以及它出现的次数。
具体分为大小写敏感和不敏感两种情况。大小写敏感时,就是输出出现次数最多的字符,及其出现的次数。大小写不敏感时,要求输出的字符按照第一次出现的大写还是小写输出。以及它的出现次数。
以下是代码:
#include<iostream>
#include<string>
using namespace std;
int main() {
string in; //输入的字符串
string flag1; //判断标志 true为大小写敏感,false为大小写不敏感
cin >> in;
int j = in.length(); //表示字符串的长度
int b[52] = {0}; //记录,大小写敏感时。
struct a {
int num;
int flag; //记录首次出现是大写还是小写 0 大写 1 小写
};
//定义一个结构体数组 //记录每个字母出现的次数。不敏感时用这个。
a a1[26]; //直接这样也可以定义结构体数组
for (int i = 0; i < 26; i++) {
a1[i].num = 0;
a1[i].flag = 0; //初始化
}
cin >> flag1;
if (flag1 == "false") //大小写不敏感时,大小写看成一个字母,
{
for (int i = 0; i < j; i++) {
if ((-1 < (int)(in[i]) - 65 )&&((int)(in[i]) - 65 < 26) && (a1[(int)(in[i])- 65].num == 0)) {
a1[(int)(in[i]) - 65].num++;
a1[(int)(in[i]) - 65].flag = 0;
}
else if ((-1 < (int)(in[i]) - 97)&&((int)(in[i]) - 97 < 26) && (a1[(int)(in[i]) - 97].num == 0)) {
a1[(int)(in[i]) - 97].num++;
a1[(int)(in[i]) - 97].flag = 1;
}
else {
if ((-1 < (int)(in[i]) - 65 )&&((int)(in[i]) - 65 < 26)) { a1[(int)(in[i]) - 65].num++; }
else { a1[(int)(in[i]) - 97].num++; }
}
}
int max = 0; int i3 = 0;
for (int i = 0; i < 26; i++) {
if (a1[i].num > max) { max = a1[i].num; i3 = i; }
}
if (a1[i3].flag == 0) {
cout << (char)(i3 + 65) << " " << max;
}
else{
cout << (char)(i3 + 97) << " " << max;
}
}
else { //大小写敏感
for (int i = 0; i < j; i++) {
if ((-1 < (int)(in[i]) - 65)&&((int)(in[i]) - 65 < 26)) { b[(int)(in[i]) - 65]++; }
else{ b[(int)(in[i]) - 71]++; }
}
int max = 0; int i3 = 0;
for (int i = 0; i < 52; i++) {
if (b[i] > max) { max = b[i]; i3 = i; }
}
if (i3 < 26) { cout << (char)(i3 + 65) << " " << max; }
else{ cout << (char)(i3 + 71) << " " << max; }
}
return 0;
}
今天卡在了一个智障语法问题,埃,可惜。在C++里面,连续的小于号,大于号是不能使用的。比如1<a<2这样的判断是无法使用的。我今天就是卡在这里,功亏一篑,可惜。下次继续加油吧。
凉了,又是一周没回信。下次继续加油吧。有续集评论里面聊。