腾讯面试C语言题
来源:互联网 发布:js window.event对象 编辑:程序博客网 时间:2024/05/18 03:44
题目大致要求:
给定一个字符串,如 aaabbccildf....,让你压缩一下这个字符串,方法是计算每次字符连续出现的次数,若大于1则存该字符出现的次数+该字符,若等于1
则只存该字符,如上面的解答为:3a2b2cildf...,用C语言编写这个程序
我的程序:
#include "stdio.h"#include "string.h"int main(){char str[1000],comprise[1000];//str为源字符串,comprise为压缩的字符串scanf("%s", str);int i,j = 0,times = 0,len = strlen(str);char temp = '#', math[32];for(i = 0;i < len;i++){// 遍历整个字符串//当当前的字符与上一个字符temp不同时或者其下一个字符时结束符'\0'时//开始进行对数字的处理//处理方式是先把次数times如果大于0,则处理数字,将数字存入字符串,//需要注意的是大于10的数得用多位来存,所以有一个取余后除以10的做法if(str[i] != temp || str[i + 1] == '\0'){if(times != 0){//等于0则表示没有统计过字符,即刚开始if(times == 1){comprise[j] = temp;times = 0;j++;} else if(times > 1){int k = 0;while(times != 0){//这里将times的每一位分离,但存的时候是从0开始的math[k] = times % 10 + '0';times = times / 10;k++;}for(k = k - 1;k>=0;k--){//需把数字倒过来comprise[j] = math[k];j++;}comprise[j] = temp;j++;}}temp = str[i];//将当前字符存起来,以供与下一个字符比较times++;//因为本次就不同,应该加一} else {times++;}}comprise[j] = '\0';//最后结束压缩的字符串printf("The orgin string: %s\n", str);printf("The comprised string: %s\n", comprise);return 0;注意:这里得考虑当次数大于9的时候,应该将数字分离为单个数字,存入压缩的字符串
- 腾讯面试C语言题
- C语言题面试大全
- 腾讯面试-程序题
- 腾讯面试算法题
- 一个C语言面试编程题
- 面试C语言软件开发工程师题
- C语言面试经常遇到的题
- C语言面试基础题以及答案
- (面试)C语言指针程序改错题
- C语言复习提高面试百题
- C语言复习面试百题
- c语言面试题目
- c语言面试集
- c语言面试精华版
- 惠通C语言面试
- C语言面试题目
- C语言面试小题展博
- C语言 笔\面试
- hdu 1074 Doing Homework 状态DP+dfs
- 【GamePlay3D】开发指南——Assets and authoring 和 GamePlay::Game类
- poj1088 滑雪
- 。
- 有向图的强连通分量的三个算法
- 腾讯面试C语言题
- 【GamePlay3D】开发——范例解读之MeshGame
- Hadoop管理员的十个最佳实践(转)
- 杭电2034
- 关于指针加减的一道题目
- Kerberos原理--经典对话
- 对kerberos的理解--经典对话读后
- dwr 整合时报错
- 杭电2035