华为面试题——压缩字符串
来源:互联网 发布:小米mix2淘宝优惠卷 编辑:程序博客网 时间:2024/05/16 10:35
题目:
通过键盘输入一串小写字母(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”
分析:
将输入字符串拆分成多段,连续相同的字符串归为一段。
用标志位记录游标的位置,是指指向每一段字符串的第一个字母,如果后面字符跟它相同,则sameNum+1;如果不同,则标志位+1。
如果sameNum的值为1,表示一个字符相同,则只输出该字符,flag+1;否则,表示多个字符相同,则输出相同数量和该字符,flag+2。
注意:输出相同字符数量时,要进行ASCII码转换!
算法代码:
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr){ int sameNum = 1; int outputFlag = 0; for (int i = 0; i < lInputLen; ++i) { if (pInputStr[i+1] == pInputStr[i]) { sameNum++; } else { if (1 == sameNum) { pOutputStr[outputFlag] = pInputStr[i]; outputFlag++; } else { pOutputStr[outputFlag] = char(sameNum+48); pOutputStr[outputFlag+1] = pInputStr[i]; outputFlag += 2; sameNum = 1; } } }}
测试代码:
//// main.cpp// stringZip//// Created by Jiajie Zhuo on 2017/4/1.// Copyright © 2017年 Jiajie Zhuo. All rights reserved.//#include <iostream>using namespace std;void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);int main(int argc, const char * argv[]) { long lInputLen; cout << "Please enter the lInputLen: "; cin >> lInputLen; char *pInputStr = new char[lInputLen]; char *pOutputStr = new char[lInputLen]; cout << "Please enter the LnputStr: "; cin >> pInputStr; stringZip(pInputStr, lInputLen, pOutputStr); cout << "OutputStr is: "; cout << pOutputStr << endl; return 0;}
考察了对字符串操作的掌握情况,还有游标的灵活使用。
0 0
- 华为面试题——压缩字符串
- 华为机试题—字符串压缩 c++
- 华为机试题---字符串压缩
- 华为面试题----字符串替换
- 华为2014校园招聘的机试题目解答——字符串压缩
- 算法思维——字符串压缩程序(华为2014校园招聘的机试题目)
- 2014华为机试题-字符串压缩
- 2014华为机试题8:压缩字符串
- 华为面试题——DFS
- 华为面试题——最高分是多少
- 华为机试——字符串压缩
- 华为机试—字符串压缩
- 华为机试—字符串压缩
- 【华为面试题】间隔输出指定字符串
- 华为机试题——字符串操作
- 华为机试题——字符串处理
- 指针遍历字符串—华为机试题
- 字符串的压缩(面试题)
- Java 设计模式情景分析——工厂模式
- struts框架集成spring框架的简单实例
- 关于c#Dev 里的TreeListLookUpEdit控件使用
- 配置Linux或Centos的阿里yum
- USB基础知识概论
- 华为面试题——压缩字符串
- 每天一个 linux 命令(20):文件查找命令 find命令之exec---学习笔记
- freebasic 教程 笔记
- HDU 4849 Wow! Such City!
- request.getParameter()与request.setAttribute()的区别
- 研发团队使用的管理平台对比
- extern "C"
- C#生成验证码(纯数字)
- HTML5 table实例