gpt4 book ai didi

c - 检查字符串的标记方法

转载 作者:行者123 更新时间:2023-11-30 18:10:17 25 4
gpt4 key购买 nike

我有一个关于 C 语言检查方法的问题。例如,如果我有一个字符串:char name[100] = "summma"; 如何检查该字符串是否具有相同的字符使用标记方法?

我尝试了这个:我使用 strlen(name) 扫描了 summa 的长度,并使用 for 循环它。之后,我使用 if 检查相同的字符。但我只能检查相同的字符(如果该字符彼此相邻)。

int x,y,z,i,j,k,l,testcase;
char kalimat[100];
char checkarray[400];

scanf("%d",&testcase); getchar();

for(int i = 0; i < testcase; i++) {
gets(kalimat);
int len = strlen(kalimat);

int count = 0;
for(int j = 0; j < len; j++) {
if(kalimat[j] == kalimat[j+1]) {
count++;
}
}
printf("%d\n",count );
if(count > 0) {
printf("Yes\n");
} else{
printf("No\n");
}
}

但是,问题是,它不会检测到这样的字符:“abbcb”

最佳答案

你可以做的是有一个数组,每个字符都有一个数字(如果只使用从A到Z,则为26,如果使用所有ASCII符号,则为256),并且每次读取一个字符时,你都会在数组中的相应数字上添加1大批。当您读完所有字符后,检查是否有任何数字大于 1:


int main() {
char kalimat[100];
scanf("%s", kalimat);
int characters[256] = {0}; // 26 if using only A-Z
int len = strlen(kalimat);
for (int i = 0; i < len; i++) {
characters[kalimat[i]]++;
// If only using A-Z:
// characters[kalimat[i]-'A']++;
// and if using a-z:
// characters[kalimat[i]-'a']++;
}
for (int i = 0; i < 256; i++) { // 26 if A-Z
if (characters[i] > 1) {
printf("'%c' has been repeated %d times.\n", (char)i, characters[i]);
}
}
return 0;
}

关于c - 检查字符串的标记方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58605816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com