#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100000
typedef struct node{
char data;
struct node *next;
}linkList,LNode;
void init(linkList *L) {
//L = (linkList*)malloc(sizeof(linkList));
L->next = NULL;
L->data = '\0';
}
void add(linkList *L,char x) {
LNode *p=(LNode*)malloc(sizeof(LNode));
p->data = x;
p->next = L->next;
L->next = p;
L = p;
}
void del(linkList *L, char x) {
LNode *p = L->next;
int flag = 0;
LNode * pre = L;
while (p != NULL) {
if (p->data == x&&!flag) {
flag = 1;
pre = p;
p = p->next;
}
else if (p->data == x && flag) {
LNode *temp = p->next;
if (temp != NULL) {
pre->next = temp;
//free(temp);
}
else
{
pre->next = p->next;
}
p = p->next;
}
else {
pre = p;
p = p->next;
}
}
}
main() {
char *S = (char*)malloc(sizeof(char)*MAXSIZE);
scanf_s("%s", S, MAXSIZE);
int n = 1;
for (n = 1; S[n - 1] != '\0'; n++);
int sum = 0;
linkList * L=(linkList*)malloc(sizeof(linkList));
for (int i = 0; i < n-1; i++) {
for (int j = i; j < n-1; j++) {
init(L);
int count = 0;
for (int k = i; k <= j; k++) {
add(L, S[k]);
}
LNode *head = L;
LNode *p = head->next;
while (p!= NULL) {
char c = p->data;
LNode *t = p->next;
while (t!=NULL) {
if (c == t->data)
del(L, c);
t = t->next;
}
free(t);
p = p->next;
}
free(p);
LNode *p3 = L;
while (p3->next != NULL) {
count++;
p3 = p3->next;
}
sum += count;
}
}
printf("%d", sum);
}
蓝桥杯 字串分值和 如何取优化此代码的内存?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- orange4reg 2022-02-25 15:59关注
```c int F(char *str) { int check; int sumall; int sumsub; sumall = 0; for( ; *str != 0; str++) { check = 0x03FFFFFF; sumsub = 0; for(char *c = str; *c != 0; c++) { if(/*check > 0 && //为什么又封起来了,因为有26个字母的字符串不大可能*/ (((int)1 << (*c - 'a')) & check) != 0) { sumsub++; check = check - ((int)1 << (*c - 'a')); //修改了,再减少一次运算,不过我以前有测试过位运算比加减法要快一些的,快多少就忘记了,不知道两个位运算和一个减法到底谁快 } sumall = sumall + sumsub; } } return sumall; }
```
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用展开全部22条评论
悬赏问题
- ¥15 传人记程序做的plc 485从机程序该如何写
- ¥15 已知手指抓握过程中掌指关节、手指各关节和指尖每一帧的坐标,用贝塞尔曲线可以拟合手指抓握的运动轨迹吗?
- ¥50 libwebsockets 如何添加其他socket事件回调
- ¥50 实现画布拖拽算子排布,通过flink实现算子编排计算,请提供思路
- ¥15 esium自定义材质拉伸问题
- ¥15 cmake+mingw使用<mysqlx/xdevapi.h>报错
- ¥15 eNSP中防火墙的使用
- ¥15 关于#mlnet#的问题:mlnet相关请求(语言-c#)
- ¥15 lvgl7.11怎么做出文字被选中的效果
- ¥50 如何快速查看手机目标app的主要服务器ip