华为的最新的两道算法设计题
2013-12-17 00:57
141 查看
要求均用C语言实现
1.找出最大长度子字符串(只包含字母),打印并且返回长度。 例如 str = "abc123abcd234abcdefgha324adsdawqdasdaseqqwe345abchded",最大子字符串是
“adsdawqdasdaseqqwe”
int findMaxSubstring(char* str) { int maxLength = 0; int maxStartIndex = 0; int curLength = 0; int curStartIndex = 0; bool isFind = 0; for(unsigned int i = 0;i<strlen(str);i++) { if(str[i] >= 'a' && str[i] <= 'z') { if(isFind == 0) { isFind = 1; curLength = 1; curStartIndex = i; } else { curLength++; } } else if (str[i] < 'a' || str[i] > 'z') { isFind = 0; if(curLength > maxLength) { maxLength = curLength; maxStartIndex = curStartIndex; curLength = 0; } } } char *p = NULL; p = &str[maxStartIndex]; while(*p >= 'a' && *p <= 'z') { putchar(*p); p++; } return maxLength; }
2. 一个四位数,如1024,1004,打印出他们的中文形式,如果一千零二十四,一千零四
这题因为限定了4位数,所以只考虑了4位数的情况,吃点分享一个大小写转换的源码,里面有不限位数的情况,当时调试的很痛苦,思想差不多。void iConvert(int digit) { char a[5][10] = {"千","百","十","","零"}; char b[11][10] = {"零","一","二","三","四","五","六","七","八","九","十"}; char result[50] = {'\0'}; int A[4] = {}; for(int i=3;i>=0;i--) { A[i] = digit % 10; digit = int(digit/10); } printf("%d,%d,%d,%d\n",A[0],A[1],A[2],A[3]); int foundZero = 0; for(int i = 0 ;i<4;i++) { if(A[i]>0) { strcat(result,b[A[i]]); strcat(result,a[i]); } if(A[i]==0 && foundZero == 0) { if(i!=3)//如果不是最后一位,则不追加零 { strcat(result,a[4]); foundZero = 1; } } } puts(result); } 运行结果:
相关文章推荐
- C/C++语言最新华为机试题“大数相加算法”
- 两道算法面试题
- 九月百度,迅雷,华为,阿里巴巴,最新校招笔试面试十题 .
- 最新九月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试三十题
- 测评:华为最新移动应用/APP测试工具MobileTest
- 2015年华为面试用C语言编写一个求大数字阶乘算法的题目
- 华为笔试面试(最新2012)(请顺手评分收藏,谢谢)
- [最新答案V0.3版]微软等数据结构+算法面试100题[第21-40题答案]
- 【备忘】2017年最新整理神经网络深度学习算法全套视频教程
- 华为西安最新动态
- 最新百度 阿里 华为 腾讯 谷歌面试笔试题及解析
- Skype Rc4最新算法下载地址
- 阿里妈妈精准定向检索及基础算法团队CTR预估最新成果
- 最近遇到两道简单算法题总结一下
- [华为机试练习题]44.24点游戏算法
- AAAI 2018 论文 | 蚂蚁金服公开最新基于笔画的中文词向量算法
- "2个面试华为光网测试的有关算法题",我写的程序!!!
- 超分辨率重建最新算法总结
- 最新九月百度人搜,阿里巴巴,腾讯华为京东面试二十题(更新至09.19)