常见面试题学习(1)
1. 反转字符串。
#include <iostream> using namespace std;/** 编写反转字符串的程序,要求优化速度、优化空间。*/void reverse(char *str,int len){char *p = str;char *q = str + len - 1; len /= 2;while(len > 0) {*p = *p ^ *q;*q = *p ^ *q;*p = *p ^ *q; p ++; q --; len --; }}int main(){char str[11] = "9876543210"; reverse(str,sizeof(str) - 1); cout << str << endl;return 0;}
2. 判断是不是循环链表,用两个指针,一个每次前进一步,一个每次前进2步,看他们的结果是否相同
#include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std;struct node{int key; node *next;};node * head;void create(){int i; node *p = NULL; head = (node *)malloc(sizeof(node)); head->key = 0; head->next = NULL; p = head; for(int i = 0;i < 6;i ++) { p->next = (node *)malloc(sizeof(node)); p->next->key = i; p->next->next = NULL; p = p->next; } p->next = head;//使尾节点指向头节点 #ifdef TEST p = head;for(int i = 0;i < 12;i ++) cout << p->key << " "; cout << endl;#endif } void test(){ node *p = NULL; node *pp = NULL; p = head->next; pp = head->next->next;while(pp != p) { p = p->next; pp = pp->next->next;if(p == NULL || pp == NULL) { cout << "不是循环链表" << endl;return ; } } cout << "是循环链表" << endl; } void des(){ node *p = NULL,*q = NULL; p = head->next;while(p != head) { q = p; p = p->next; free(q); } free(head);}int main(){ create(); test(); des();return 0;}
3. 将 一个字符串型的数字转化为long 型
记得上次百度有一道面试题是这样的,将一个字符串转化为long ,但是字符串中可能包含小数点,和其他字符,问的是能不能也向下面的方式,一遍遍历求出结果,要求是写
出代码,而不是说就行
#include <iostream>#include <stdio.h>#include <string.h>using namespace::std; const int MAX = 10; int my_power(int n){if(n <= 0)return 1;int temp = 1;while (n--)temp *= 10;return temp;} float convert(const char* str){float sum1 = 0.0;float sum2 = 0.0;int i = 0;int idx = 0;int len = strlen(str); while(str[idx] != '.' && str[idx] != '\0')idx++; while(i < idx){sum1 = sum1 * 10 + (str[i]-'0'); //整数部分i ++;}i = idx + 1;if(i < len){while(i < len){sum2 = sum2 * 10 + (str[i]-'0');i ++;}} return (sum1+sum2/my_power(len - idx - 1));}int main(){float result = 0.0;char str[MAX];cin >> str;result = convert(str);cout << result << endl;return 0;}
#include <iostream> using namespace std; /*写一个函数,检查字符串是否是整数,如果是,返回其整数值。*/ long convert(const char * str){long value = 0,f = 1;if(* str == '-') str ++,f = -1;for(; *str != '\0' && *str >= '0' && *str <= '9'; str ++) value = value * 10 + (*str - '0'); return *str == '\0' ? value * f:0;}int main(){char str[] = "123456789"; cout << convert(str) << endl; char str3[] = "-1234567"; cout << convert(str3) << endl; return 0;}
百度那道题:考虑各种情况下。
#include <iostream>#include <iomanip>using namespace std;inline bool IsNum(const char c){return c >= '0' && c <= '9';} inline bool IsAlpha(const char c){return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z');} // 从字符串str中获得一个浮点数// start表示这个浮点数在字符串中的起始位置。end表示浮点数结束的下一个位置// dot表示小数点所在的位置bool CheckString(const char* str, int& start, int& dot, int& end){if (str == NULL)//字符串为空 return false; char* p = const_cast<char*>(str); while(!IsNum(*p++)); p--; start = p - str; if (str[start - 1] == '.')// -.14f { start--; p--; } for (; IsNum(*p); p++); if (*p == '.') { dot = p - str;while(IsNum(*++p)); end = p - str;return true; } dot = p - str; end = p - str;return true;} //a^bdouble Pow(const int a, const int b){double rslt = 1;for (int i = 0; i < b; i++) rslt *= a; return rslt;}// 把一个字符串转化成double型的浮点数double Atof(const char* str){int s, d, e;if (!CheckString(str, s, d, e)) { cout << "please check your string." <<endl;return 0; }double result = 0.0; double pow = Pow(10, e - 1 - d); // 计算小数部分 for (int i = e - 1; i > d; i--) { result += (str[i] - '0') / pow; pow /= 10; } pow = 1;// 计算整数部分 for (int j = d - 1; j >= s; j--) { result += (str[j] - '0') * pow; pow *= 10; } if (s > 0 && str[s - 1] == '-') result = -result; return result;}int main(){ cout << endl; cout << endl << setprecision(10) << Atof("-123.456") << endl;return 0;}
常见面试题学习(1)相关推荐
- js怎么在一个div中嵌入另一网站_好程序员web前端学习路线分享HTML5常见面试题集锦一...
好程序员web前端学习路线分享HTML5常见面试题集锦,接下来将会持续为大家分享几篇HTML5常见面试题. 1.布局 左边20% 中间自适应 右边200px 不能用定位 答案:圣杯布局/双飞翼布局或者 ...
- 软件测试系统学习流程和常见面试题
在学习软件测试的时候你是否会感觉到不知从何下手? 今天教导你们软件测试学习的系统流程和面试常见的问题. 学习流程 一.必备技能 编程基础,能看懂前端页面,掌握一门语言:php/python/java等 ...
- 测试开发java常见面试题_Java常见面试题200+,学习、面试必备
本套Java面试题,选取了企业面试最常问到的问题,可以做为Java工程师的面试宝典,也可以做为想要不断完善和扩充自己 java 技术的学习者. 主要包含: Java 基础.容器.多线程.反射.对象拷贝 ...
- mysql关于时间的面试题,mysql时间设置默认值MySQL常见面试题
1.limit(选出10 到20 条) select * from students order by id limit 9,10; 2.MySQL 会使用索引的操作符号 =,>,=,betwe ...
- Spring常见面试题及答案汇总1000道(春招+秋招+社招)
Spring面试题以及答案整理[最新版]Spring高级面试题大全(2021版),发现网上很多Spring面试题都没有答案,所以花了很长时间搜集,本套Spring面试题大全,汇总了大量经典的Sprin ...
- Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)
Java多线程面试题以及答案整理[最新版]Java多线程高级面试题大全(2021版),发现网上很多Java多线程面试题都没有答案,所以花了很长时间搜集,本套Java多线程面试题大全,汇总了大量经典的J ...
- MySQL常见面试题及答案汇总1000道(春招+秋招+社招)
MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...
- Jvm常见面试题及答案汇总1000道(春招+秋招+社招)
Jvm面试题以及答案整理[最新版]Jvm高级面试题大全(2021版),发现网上很多Jvm面试题都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,汇总了大量经典的Jvm程序员面试题以及答案,包含J ...
- Dubbo常见面试题及答案汇总1000道(春招+秋招+社招)
Dubbo面试题以及答案整理[最新版]Dubbo高级面试题大全(2021版),发现网上很多Dubbo面试题都没有答案,所以花了很长时间搜集,本套Dubbo面试题大全,汇总了大量经典的Dubbo程序员面 ...
最新文章
- python sys模块作用_浅谈Python中的模块
- Swift来了,是不是可以入手IOS开发了?
- 我国手机浏览器用户达2.15亿
- matlab中rowset什么意思,没什么用的matlab代码1
- 年月跨度_建筑结构丨国内跨度最大的张弦桁架工程——合肥滨湖国际会展中心二期首榀桁架滑移成功...
- 隐藏自己电脑的IP地址
- 【程序性能分析利器】Google Perf Tool 和 Valgrind 工具包简介
- spdlog: undefined reference to `fmt::SystemError::init(int, fmt::BasicCStringRef<char>, fmt::ArgList
- js计算两个整数之间的百分比
- ceb转pdf linux,基于zynq的Linux根文件系统生成
- Axure基础教程:产品流程图的制作方法详解
- 计算机主机报警 声,电脑开机报警声音大全
- js模板引擎渐进--each/for(5)
- 一个Web前端实习生的简历
- android格式化sd卡软件,SD/TF卡格式化程序
- JS中的curry化(柯里化)
- .netMVC企业微信网页授权+注册全局过滤器
- HHT和FFT的对比
- HTML+CSS+JS制作一个生日祝福网站(程序员专属情人节表白网站)
- 南京软件测试自学英语,南京软件测试培训班怎么样?南京软件测试培训班学什么?...
热门文章
- Mysql增强半同步模式_MySQL增强半同步参数rpl_semi_sync_master_wait_point值AFTER_SYNC和AFTER_COMMIT...
- 怎么把快捷键改成eclipse_Java IDE超好用的10个快捷键
- Python图像处理,替代PS做好效果图!
- 适合初学者的Python小游戏开发,不仅有趣还能巩固自己所学知识
- mac微软雅黑字体_【字体字重】常见设计稿字体对应字重
- 通过Sequentail网络容器创建LeNet-5
- 习题4-3 求分数序列前N项和 (15 分)
- 解题报告(八) prufer 序列与 Cayley 公式(ACM / OI)超高质量题解
- dp背包九讲(待补充,暂时前两讲)
- 从零开始撸音乐播放器(源码可下载)