【2014】 字符串(2)

题目描述(40分):

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

压缩规则:

1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。

2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。

要求实现函数:

void stringZip(const
char *pInputStr, long lInputLen, char *pOutputStr);

【输入】 pInputStr: 
输入字符串

lInputLen:  输入字符串长度

【输出】 pOutputStr:
输出字符串,空间已经开辟好,与输入字符串等长;

【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

示例

输入:“cccddecc”  
输出:“3c2de2c”

输入:“adef”    
输出:“adef”

输入:“pppppppp”
输出:“8p”


    void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)
{

int Ref,subLen;
int j = 0;
for(long i=0;i<lInputLen;)
{
subLen = 1;
Ref = i;
while(pInputStr[++i]==pInputStr[Ref])
{
subLen++;

}

if(subLen>1)
{
//char L= subLen + 0x30; // 作为整数型的subLen对应的ASCII码值应该是:subLen + 0x30(因为1对应的ASCII是0x31)
//此招只适用于0-9的整形转换成ASCII,如果大于9就不灵了
//pOutputStr[j++] = L;
char p[20];
itoa(subLen,p,10); //把整形subLen按十进制数转换的字符串存在指针p中
strcpy(pOutputStr+j,p);
j += strlen(p);
}
pOutputStr[j++] = pInputStr[Ref];

}
pOutputStr[j]=‘\0‘;

}

【2014】 字符串(2),布布扣,bubuko.com

时间: 2024-12-26 20:41:18

【2014】 字符串(2)的相关文章

华为2014字符串笔试 2

通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1.仅压缩连续重复出现的字符.比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc". 2.压缩字段的格式为"字符重复的次数+字符".例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz". 要求实现函数:  void string

华为2014字符串笔试 1

通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串“abacacde”过滤结果为“abcde”. 要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); [输入] pInputStr:  输入字符串             lInputLen:  输入字符串长度          [输出] pOu

APUE学习笔记——6.10 时间与时间例程 time_t

Unix提供的最基本的时间服务室日历时间(纪元时间),也就是计算1970年1月1日0时0分0秒到当前的秒数.该秒数用time_t表示. typedef long time_t; /* 时间值time_t 为长整型的别名*/ 1.获取/设置时间 1.1 time和time_t 函数time()可以用于获取当前日历时间 #include <time.h> time_t time(time_t *calptr); Returns: value of time if OK,?1 on error 当前

linux下c编程入门笔记

一.基础知识 源程序编译 /***hello.c***/ int main() {printf("hello,world.\n"); return 0;} gcc -o hello hello.c -o生成可执行文件 -c只输出目标代码 -g可调试 makefile编写 ####makefile1#### main: main.o t1.o t2.o gcc -o [email protected] $^ main.o: main.c t1.h t2.h gcc -c $< t1

【2014】字符串(3)

题目描述(50分): 通过键盘输入100以内正整数的加.减运算式,请编写一个程序输出运算结果字符串. 输入字符串的格式为:"操作数1 运算符 操作数2","操作数"与"运算符"之间以一个空格隔开. 补充说明: 1.操作数为正整数,不需要考虑计算结果溢出的情况. 2.若输入算式格式错误,输出结果为"0". 要求实现函数: void arithmetic(const char *pInputStr, long lInputLen,

字符串2014年6月7日15:56:54

商业银行 具有创造活期存款的垄断经营特权,并主要发放工商业贷款的金融中介机构 混业经营 银行业.证券业和保险业的相互渗透与一体化经营 分业经营 银行业.证券业和保险业的业务严格分开,禁止业务交叉,彼此的资金不许相互融通 商业银行的流动性 商业银行满足存款人提取现金.支付到期债务和借款人正常贷款需求的能力 现金头寸 现金资产是指现金与现金等值的可随时变现流动性资产 贷款承诺 为借款人提供一定的贷款额度,在承诺期间借款人有权在任何时间使用这笔贷款 贷款出售 商业银行在贷款形成之后,将贷款债权出售给第

字符串 2014年6月7日12:51:07

1.单个字符也可以表示为字符串,还可以有长度为0的字符串(就是"",空字符串).null和""的区别,String.IsNullOrEmpty 1 string s = " ";//" "不是empty 2 3 //s == "" 相等于 s == string.Empty 4 if (string.IsNullOrEmpty(s))//等价于s == null || s == "" 5

字符串2014年6月7日17:29:44

---恢复内容开始--- 字符串替换:string Replace(string oldValue, string newValue)将字符串中的出现oldValue的地方替换为newValue.例子:名字替换. 1 string s = "abc1234"; 2 s = s.Replace("a", "A");//第一个参数是旧的,第二个是新的 3 Console.WriteLine(s); 取子字符串:string Substring(int

【2014】字符串(1)

一.题目描述(60分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果为"abcde". 要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr); [输入] pInputStr:  输入字符串 lInputLen:  输入字符串长度 [