华为2014字符串笔试 1

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

比如字符串“abacacde”过滤结果为“abcde”。

要求实现函数:void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

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

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

示例 
输入:“deefd”        输出:“def”
输入:“afafafaf”     输出:“af”
输入:“pppppppp”     输出:“p”

main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出
当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,但是不要改变函数原型。

一定要保证编译运行不受影响

#include <iostream>
#include <cassert>
using namespace std;    

bool g_flag[26];
void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr){

    assert(pInputStr != NULL);
    int i = 0;
    if (pInputStr == NULL || lInputLen <= 1){
        return;
    }
    const char *p = pInputStr;
    while(*p != ‘\0‘){
        if (g_flag[(*p - ‘a‘)]){  //虽然每次的*p-‘a‘所在的位置是否为0,如果已经是1,说明出现过了,直接执行else的输出  是1跳过,是0输出,并将该位置置
            p++;
        }else{
            pOutputStr[i++] = *p;
            g_flag[*p - ‘a‘] = 1;
            p++;
             }
        }
    pOutputStr[i] = ‘\0‘;
}
int main(){
    memset(g_flag,0,sizeof(g_flag));
    char input[] = "aabcbbcde";
    char *output = new char[strlen(input) + 1];
    stringFilter(input,strlen(input),output);
    cout<<output<<endl;  //用cout自动根据默认识别格式输出,直接输出了字符串,printf是有控制选择的,要输出的是字符串还是首地址。
    delete output;
    return 0;
}  
  assert()在函数开始处检验传入参数的合法性,头文件#include <assert>;用字符数组g_flag[]进行26个字母标记,if语句判断:若*p-‘a‘所在的位置已经是1(真),说明出现过了,直接执行else的输出,(是1跳过查看下一个,是0输出)并将该位置置1。

华为2014字符串笔试 1

时间: 2024-08-25 06:17:08

华为2014字符串笔试 1的相关文章

华为2014字符串笔试 2

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

【转】BAT及各大互联网公司2014前端笔试面试题:JavaScript篇

原文转自:http://blog.jobbole.com/78738/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正. 前面几题是会很基础,越下越有深度. 附上第二篇:BAT及各大互联网公司2014前端笔试面试题–Html,Css篇 前面几题是会很基础,越下越有深度. 初级Javascript: 1.Jav

华为2014机试题(一)

过几天就要进行华为的机试了,今儿临时抱抱佛脚,在网上找到2014届华为校招的机试题,琢磨了一会儿,贴出来记录下. 首先感谢一下Hackbuteer提供的题目:http://blog.csdn.net/hackbuteer1/article/details/11132567 对于第一题,字符过滤.最简单也是最直接的就是HASH.题目规定了输入序列只能为小写字符'a~z'.因此直接开辟一个大小为26的数组用于记录当前字符是否已经出现即可. 需要注意的问题: 1. hash数组记得初始化 2. pOu

BAT及各大互联网公司2014前端笔试面试题--JavaScript篇(昨天某个群友表示写的简单了点,然后我无情的把他的抄了一遍)

(某个群友)http://www.cnblogs.com/coco1s/ 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益. 而更多的题目是我一路以来收集的,也有往年的,答案不确保一定正确,如有错误或有更好的解法,还请斧正. 附上第二篇:BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 前面几题是会很基础,越下越有深度. 初级Javascript: 1.JavaScript是一门什么样的语言,它

华为校招上机笔试试题(A卷)——java实现

华为校招上机笔试试题(A卷)--java实现 编程题:A1.最小长方形, A2. 判断一个数字中是否包含两个相同的子串, A3. 取石子游戏. A1.最小长方形 java代码: import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class MinRectangle { public static void main(String arg[]){ List<Integer> ld

华为测试 字符串运用-密码截取

Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结束时加入一些无关的字符以防止别国破解.比如进行下列变化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 .因为截获的串太长了,而且存在多种可能的情况(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量实在是太大了,他只能向电脑高手求助,你能帮Catcher找出最长的有效密码串吗? 输

BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇

BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 2014/08/03 · Web前端, 开发 · CSS, HTML, 技术面试 分享到: 188 MongoDB集群之分片技术应用 Hello,移动WEB Linux权限管理之特殊权限 Android高级特效-索引 原文出处: Ico_Coco 的博客(@CHoK__Coco_mAm)   欢迎分享原创到伯乐头条 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习

面试题2:BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇

BAT及各大互联网公司2014前端笔试面试题:HTML/CSS篇 Html篇: 1.你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? IE: trident内核 Firefox:gecko内核 Safari:webkit内核 Opera:以前是presto内核,Opera现已改用Google Chrome的Blink内核 Chrome:Blink(基于webkit,Google与Opera Software共同开发) 2.每个HTML文件里开头都有个很重要的东西,Doctype,知道这

华为OJ:字符串反转

很简单,逆向输出就好了. import java.util.Scanner; public class convertString { public static void main(String args[]){ Scanner input=new Scanner(System.in); String s=input.nextLine(); StringBuffer l=new StringBuffer(); for(int i=s.length()-1;i>=0;i--){ l.append