当前位置: 首页 > news >正文

C语言 | Leetcode C语言题解之第394题字符串解码

题目:

题解:


#define N 2000typedef struct {int data[30];;int top;
} Stack;void push(Stack *s, int e) { s->data[(s->top)++] = e; }int pop(Stack *s) { return s->data[--(s->top)]; }//多位数字串转换成int
int strToInt(char *s)
{char val[] = {'\0', '\0', '\0', '\0'};int result = 0;for(int i = 0; isdigit(s[i]); ++i)val[i] = s[i];for(int i = strlen(val) - 1, temp = 1; i >= 0; --i, temp *= 10)result += ((val[i] - '0') * temp);return result;
}char* decodeString(char *s)
{Stack magnification; magnification.top = 0;Stack position; position.top = 0;char *result = (char*)malloc(sizeof(char) * N);char *rear = result;for(int i = 0; s[i] != '\0'; ) {if(isdigit(s[i])) {push(&magnification, strToInt(&s[i]));while(isdigit(s[i]))++i;}else if(s[i] == '[') {push(&position, rear - result);++i;}else if(s[i] == ']') {char *p = result + pop(&position);int count = (rear - p) * (pop(&magnification) - 1);for(; count > 0; --count)*(rear++) = *(p++);++i;}else*(rear++) = s[i++];}*rear = '\0';return result;
}

http://www.mrgr.cn/news/19242.html

相关文章:

  • Java中调用第三方接口
  • 语言桥梁:探索全球最受欢迎的翻译工具,让理解更简单
  • 3DMAX建筑魔术师MagicBuilding插件使用方法详解
  • jQuery基础——高级技巧
  • 软件测试方法之等价类测试
  • 【LVI-SAM】激光点云如何辅助视觉特征深度提取
  • 输入输出系统和中断总结
  • VUE3项目的几种创建方式
  • OpenCV从入门到精通——角点特征点提取匹配算法实战
  • ubuntu24和win11双系统,每次启动后Windows时间不正确的处理办法
  • TCP协议相关特性
  • Java并发编程之ThreadLocal深度探索
  • Linux 学习之路 - 信号的保存
  • 巧用xrename批量重命名下载的影视文件
  • 设置Kali Linux 24小时制,并同步时间
  • 使用vscode编辑matlab完美解决方法
  • Docker 安装FileBeat、Elasticsearch及Kibana详细步骤
  • mac 安装redis
  • 计算机岗位(面试)
  • Open3D 基于曲率大小的特征点提取