关于计算一个字符串中存在的相同字符串个数
- 这个代码采用了比较简单的思路做的,没有储存起来这是比较不好的一个地方,但是也比较容易让人接受
思路:
- 循环每一个与最后一个比较,计算出个数,然后
- 防止重复输出多次,加一个循环判断前面是否已经计算过了
- 如果计算过了就直接break跳出循环
#include <stdio.h>
#include <string.h>
int main()
{
char character[20];
bzero(character,20);
//从键盘获取一个字符串
printf("请输入需要计算器的字符串:\n");
scanf("%s",character);
//定义两个标签,flag用于判断前面是否已经计算过该字符串,flag1用于计算个数,因为要加上当前的字符串,所以要从1开始
int flag=0,flag1=1;
//i代表从第一个开始和字符串中的每一个对比是否一样
for(int i=0;i<strlen(character);i++)
{
//用于判断前面是否已经计算过改字符串了
for(int k=0;k<i;k++)
{
//如果前面有一样的字符串证明该字符串已经被计算过了
if(character[i]==character[k])
{
//把flag置为1,用于下面跳过这次循环
flag=1;
//结束这个循环,继续下面的代码
break;
}
}
//如果flag为真的时候(计算机中1即为真)
if(flag)
{
//把flag重新置为0,用于下次循环使用
flag=0;
//跳过这次循环,不执行下面的代码
continue;
}
//开始从i+1个字符开始和i比较
for(int j=i+1;j<strlen(character);j++)
{
if(character[i]==character[j])
//用于计算相同的个数
flag1++;
}
//最后打印输出一下
printf("%c:%d\n",character[i],flag1);
flag1=1;
}
return 0;
}