代码:
#include<iostream>
using namespace std;
int youqu(char *str)
{
int i,n=0;
if(strlen(str)==1)//只有一个字符直接返回0
return n;
if(str[0]!=str[1])//第一个字符只和右边比
n++;
if(str[strlen(str)-1]!=str[strlen(str)-2])//最后一个字符只和左边比
n++;
for(i=1;i<strlen(str)-1;++i)//从第二个字符开始到倒数第二个字符,和左右都比较
{
if(str[i+1]!=str[i]||str[i-1]!=str[i])
n++;
}
return n;
}
int main()
{
unsigned int n;
scanf("%d",&n);
if(n<1||n>50)
{
printf("字符串长度错误\n");
return -1;
}
char *str=(char*)malloc(sizeof(char)*(n+1));
str[n+1]='\0';
scanf("%s",str);
for(int i=0;i<n;++i)
{
if(str[i]!='H'&&str[i]!='T')
{
printf("只能输入H或T\n");
return -1;
}
}
//char *str="HTHTHTHTH";
int count=youqu(str);
printf("%d\n",count);
return 0;
}
代码如有改进的地方,请留言。