solution.md 3.7 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1
# 单词分析
F
fix bug  
feilong 已提交
2

3
**问题描述**
F
fix bug  
feilong 已提交
4

每日一练社区's avatar
每日一练社区 已提交
5 6
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。  
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。
7 8

**输入格式**
F
fix bug  
feilong 已提交
9

每日一练社区's avatar
每日一练社区 已提交
10
输入一行包含一个单词,单词只由小写英文字母组成。
11 12

**输出格式**
F
fix bug  
feilong 已提交
13

每日一练社区's avatar
每日一练社区 已提交
14 15 16
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪
个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
17 18

**样例输入**
F
fix bug  
feilong 已提交
19

每日一练社区's avatar
每日一练社区 已提交
20 21 22
```
lanqiao
```
23
**样例输出**
F
fix bug  
feilong 已提交
24

每日一练社区's avatar
每日一练社区 已提交
25 26 27
```
a 2
```
28
**样例输入**
F
fix bug  
feilong 已提交
29

每日一练社区's avatar
每日一练社区 已提交
30 31 32
```
longlonglongistoolong
```
33
**样例输出**
F
fix bug  
feilong 已提交
34

每日一练社区's avatar
每日一练社区 已提交
35 36 37
```
o 6
```
38
**评测用例规模与约定**
F
fix bug  
feilong 已提交
39

每日一练社区's avatar
每日一练社区 已提交
40 41 42
对于所有的评测用例,输入的单词长度不超过 1000。


每日一练社区's avatar
每日一练社区 已提交
43 44
以下选项错误的是?

每日一练社区's avatar
每日一练社区 已提交
45
## aop
F
fix bug  
feilong 已提交
46

每日一练社区's avatar
每日一练社区 已提交
47
### before
F
fix bug  
feilong 已提交
48

每日一练社区's avatar
每日一练社区 已提交
49
```cpp
每日一练社区's avatar
每日一练社区 已提交
50 51
#include <bits/stdc++.h>
using namespace std;
每日一练社区's avatar
每日一练社区 已提交
52 53
```
### after
F
fix bug  
feilong 已提交
54

每日一练社区's avatar
每日一练社区 已提交
55 56 57 58 59
```cpp

```

## 答案
F
fix bug  
feilong 已提交
60

每日一练社区's avatar
每日一练社区 已提交
61 62 63
```cpp
int main()
{
每日一练社区's avatar
每日一练社区 已提交
64 65 66 67 68
    char a[1005];
    scanf("%s", a);
    int len;
    len = strlen(a);
    int b[26] = {0};
每日一练社区's avatar
每日一练社区 已提交
69 70
    for (int i = 0; i < len; i++)
    {
每日一练社区's avatar
每日一练社区 已提交
71 72 73 74 75 76
        b[a[i] + 'a']++;
    }
    int max1 = 0, j;
    for (int i = 0; i < 26; i++)
    {
        if (max1 < b[i])
每日一练社区's avatar
每日一练社区 已提交
77
        {
每日一练社区's avatar
每日一练社区 已提交
78 79
            max1 = b[i];
            j = i;
每日一练社区's avatar
每日一练社区 已提交
80
        }
每日一练社区's avatar
每日一练社区 已提交
81 82 83 84
    }

    cout << char('a' + j) << endl
         << max1;
每日一练社区's avatar
每日一练社区 已提交
85 86 87 88
}
```
## 选项

F
fix bug  
feilong 已提交
89

每日一练社区's avatar
每日一练社区 已提交
90
### A
F
fix bug  
feilong 已提交
91

每日一练社区's avatar
每日一练社区 已提交
92
```cpp
每日一练社区's avatar
每日一练社区 已提交
93 94 95 96
#define MAX 1010

int s[MAX];

每日一练社区's avatar
每日一练社区 已提交
97 98
int main()
{
每日一练社区's avatar
每日一练社区 已提交
99 100 101 102 103 104 105 106
    string str;
    cin >> str;
    int n = str.size();
    for (int i = 0; i < n; i++)
    {
        int a = str[i] - 'a';
        s[a]++;
    }
每日一练社区's avatar
每日一练社区 已提交
107
    int max = 0;
每日一练社区's avatar
每日一练社区 已提交
108 109
    char ch;
    for (int i = 0; i < MAX; i++)
每日一练社区's avatar
每日一练社区 已提交
110
    {
每日一练社区's avatar
每日一练社区 已提交
111
        if (max <= s[i])
每日一练社区's avatar
每日一练社区 已提交
112
        {
每日一练社区's avatar
每日一练社区 已提交
113
            if (max < s[i])
每日一练社区's avatar
每日一练社区 已提交
114
            {
每日一练社区's avatar
每日一练社区 已提交
115 116 117 118 119 120 121
                max = s[i];
                ch = (char)(i + 'a');
            }
            else if (max == s[i])
            {
                max = s[i];
                ch = ch;
每日一练社区's avatar
每日一练社区 已提交
122 123
            }
        }
每日一练社区's avatar
每日一练社区 已提交
124 125 126 127 128 129
    }

    cout << ch << endl;
    cout << max << endl;

    return 0;
每日一练社区's avatar
每日一练社区 已提交
130 131 132 133
}
```

### B
F
fix bug  
feilong 已提交
134

每日一练社区's avatar
每日一练社区 已提交
135
```cpp
每日一练社区's avatar
每日一练社区 已提交
136 137 138 139 140 141
char m[1005];
int n[1005];
char c;
bool b[1005];
string str;

每日一练社区's avatar
每日一练社区 已提交
142 143 144
int main()
{
    int max = 0;
每日一练社区's avatar
每日一练社区 已提交
145 146 147 148
    cin >> str;
    memset(b, false, sizeof(b));

    for (int i = 0; i < str.size(); i++)
每日一练社区's avatar
每日一练社区 已提交
149
    {
每日一练社区's avatar
每日一练社区 已提交
150
        while (b[i])
每日一练社区's avatar
每日一练社区 已提交
151
        {
每日一练社区's avatar
每日一练社区 已提交
152 153 154 155 156 157 158 159
            i++;
        }
        m[i] = str[i];
        b[i] = true;
        n[i] = 1;
        for (int j = i + 1; j < str.size(); j++)
        {
            if (m[i] == str[j])
每日一练社区's avatar
每日一练社区 已提交
160
            {
每日一练社区's avatar
每日一练社区 已提交
161 162
                n[i]++;
                b[j] = true;
每日一练社区's avatar
每日一练社区 已提交
163 164
            }
        }
每日一练社区's avatar
每日一练社区 已提交
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189
        if (max <= n[i])
        {
            if (max == n[i])
            {
                if ((c - 'a') <= (m[i] - 'a'))
                {
                    c = c;
                }
                else
                {
                    c = m[i];
                }
            }
            else
            {
                max = n[i];
                c = m[i];
            }
        }
    }

    cout << c << endl;
    cout << max << endl;

    return 0;
每日一练社区's avatar
每日一练社区 已提交
190 191 192 193
}
```

### C
F
fix bug  
feilong 已提交
194

每日一练社区's avatar
每日一练社区 已提交
195 196 197 198 199 200 201
```cpp
int main()
{
    int a[128] = {0};
    char s[1000];
    scanf("%s", s);
    int len = strlen(s);
每日一练社区's avatar
每日一练社区 已提交
202

每日一练社区's avatar
每日一练社区 已提交
203 204
    int max = 0;
    char t = 0;
每日一练社区's avatar
每日一练社区 已提交
205

每日一练社区's avatar
每日一练社区 已提交
206 207 208 209
    for (int i = 0; i < len; i++)
    {
        a[s[i]]++;
        if (max < a[s[i]])
每日一练社区's avatar
每日一练社区 已提交
210
        {
每日一练社区's avatar
每日一练社区 已提交
211
            max = a[s[i]];
每日一练社区's avatar
每日一练社区 已提交
212 213
            t = s[i];
        }
每日一练社区's avatar
每日一练社区 已提交
214 215 216 217 218 219 220
        else if (max == a[s[i]])
        {
            if (t > s[i])
            {
                t = s[i];
            }
        }
每日一练社区's avatar
每日一练社区 已提交
221
    }
每日一练社区's avatar
每日一练社区 已提交
222 223 224
    printf("%c\n%d", t, max);
}
```