最粗暴的实现算法,没有考虑优化问题。
#include<stdio.h>
#include <string.h>
int function(char *str);
int main(){
int num,temp,i;
char s[100][10002];
scanf("%d",&num);
temp = num;i = 0;
while(num--){
scanf("%s",s[i]);
i++;
}
for(i = 0;i<temp;i++){
printf("\n%d",function(s[i]));
}
printf("\n");
return 0;
}
int function(char *str){
int num,value,sum,sum1,i;
num = 0;sum = 0;sum1 = 0;
for(i=0;i<strlen(str);i++){
if(*(str+i) >= 'A' && *(str+i) <= 'Z'){
value = *(str+i) - 'A'+1;
num += 2;
i++;
while(*(str+i) == *(str+i-1) + 32 || *(str+i) -'A'+1 == value){
if(*(str+i) == *(str+i-1) + 32){
while(*(str+i) == *(str+i-1) + 32){
i++;
num += 1;
}
}
if(*(str+i)-'A'+1 == value){
while(*(str+i)-'A'+1 == value){
i++;
num += 2;
}
}
}
sum += num*num*value;
}else if(*(str+i) >= 'a' && *(str+i) <= 'z'){
value = *(str+i) -'a'+1;
i++;
num += 1;
while(*(str+i) == *(str+i-1) - 32 || *(str+i) -'a'+1 == value){
if(*(str+i) == *(str+i-1) - 32){
while(*(str+i) == *(str+i-1) - 32){
i++;
num += 2;
}
}
if(*(str+i) -'a'+1 == value){
while(*(str+i) -'a'+1 == value){
i++;
num++;
}
}
}
sum += num*num*value;
}
i--;
sum1 += sum;
sum = 0;
num = 0;
}
return sum1;
}
结果:
5 //输入5个数
abcd
aaaa
bBbB
sadhjhdblkdaldhaB
aa
//输出结果
10
16
72
117
4