用C语言给出一个字符串 � S,每次选择一个字母,然后删除 � S 中所有该字母。执行若干次后,若字符串变为"CAT",则 � S 为喵性字符串。 蒜头君喜欢研究字符串,他在白纸上写下了 � T 个字符串,然后想判断每个字符串 � � S i 是否为喵性字符串,请你帮帮他。 输入格式 一个行一个整数 � ( 1 ≤ � ≤ 10 ) T (1≤T≤10)。 接下来 � T 行,每行一个仅包含大写字母的字符串 � � ( 1 ≤ ∣ � � ∣ ≤ 500 ) S i (1≤∣S i ∣≤500)。 输出格式 � T 行,若 � � S i 为喵性字符串,输出"YES",否则输出"NO"。 格式说明
时间: 2024-01-08 07:04:54 浏览: 159
输入样例:
```
3
CAT
DOG
ABBCCCDDDDEEEEE
```
输出样例:
```
YES
NO
YES
```
C语言代码如下:
相关问题
用C语言给出一个字符串 � S,每次选择一个字母,然后删除 � S 中所有该字母。执行若干次后,若字符串变为"CAT",则 � S 为喵性字符串。 蒜头君喜欢研究字符串,他在白纸上写下了 � T 个字符串,然后想判断每个字符串 � � S i 是否为喵性字符串,请你帮帮他。
可以使用 C 语言来解决这个问题。具体的思路是,遍历字符串,统计每个字母出现的次数,然后依次尝试删除每个字母,如果删除后字符串变为"CAT",则说明该字符串是喵性字符串。
以下是示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int is_cat(char *s) {
int count[26] = {0}; // 统计每个字母出现的次数
int len = strlen(s);
int i, j;
for (i = 0; i < len; i++) {
count[s[i] - 'A']++;
}
while (count['C' - 'A'] > 0 && count['A' - 'A'] > 0 && count['T' - 'A'] > 0) {
// 删除 C、A、T 字母
count['C' - 'A']--;
count['A' - 'A']--;
count['T' - 'A']--;
}
// 判断最终字符串是否为 "CAT"
if (count['C' - 'A'] == 0 && count['A' - 'A'] == 0 && count['T' - 'A'] == 0) {
return 1;
} else {
return 0;
}
}
int main() {
char str[MAX_LEN];
int t;
scanf("%d", &t);
while (t--) {
scanf("%s", str);
if (is_cat(str)) {
printf("YES\n");
} else {
printf("NO\n");
}
}
return 0;
}
```
该代码首先读入字符串的个数,然后依次判断每个字符串是否为喵性字符串。对于每个字符串,首先统计每个字母出现的次数,然后依次尝试删除 C、A、T 三个字母,直到无法再删除为止。最后判断剩余的字母是否为零即可。
c语言给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。 单词是指仅由字母组成、不包含任何空格字符的最大子字符串。
可以使用指针来遍历字符串,从后往前找到最后一个单词的开始位置和结束位置,然后计算出长度即可。
具体实现可以参考下面的代码:
```c
int lengthOfLastWord(char* s) {
int len = strlen(s);
int end = len - 1;
// 找到最后一个非空格字符的位置
while (end >= 0 && s[end] == ' ') {
end--;
}
if (end < 0) {
return 0;
}
int start = end;
// 找到最后一个单词的开始位置
while (start >= 0 && s[start] != ' ') {
start--;
}
return end - start;
}
```
这里先从字符串末尾开始找到最后一个非空格字符的位置,然后再向前找到最后一个单词的开始位置。最后返回结束位置与开始位置之差即可得到最后一个单词的长度。如果字符串中没有单词,则返回0。
阅读全文