找两个字符串中添加的那个字符
来源:互联网 发布:js获取事件源的值 编辑:程序博客网 时间:2024/06/12 21:29
题目:
第一次的代码:
char findTheDifference(char* s, char* t) { char* aa = s; while (*t) { while (*s) { if (*s==*t) { t++; s = aa; break; } s++; } if (!*s) { break; } } return *t;}
第一次的代码确实能解决一部分问题,因为示例给的是没有重复字母的组合”abcd”和”abcde”,但是如果给的是有重复的字符,比如给的字符串是”aa”和”aaa”,那么这个代码就是错误的。
第二次的代码
char findTheDifference(char* s, char* t) { while (*s&&*t) { if (*s!=*t) { break; } s++; t++; } return *t;}
这次的函数是按顺序对比每一个字母,直到发现不同。
第二次的代码解决上一次的问题,但是,问题又来了,如果给的字母组合不是按顺序排列的,那这个代码也是错的,比如字符串是”abcde”和”cbdafe”,那么运行就会出错
最终代码
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>char findTheDifference(char* s, char* t) { int ia = 0; int ib = 0; char* aa = s; char* bb = t; char* m = t; while (*m) { t = bb; while (*t) { if (*m == *t) { ia++; t++; } else { t++; } } s = aa; while (*s) { if (*m == *s) { ib++; s++; } else { s++; } } if (ia>ib) { break; } m++; } return *m;}int main(){ char* a = "abcde"; char* b = "cdefab"; printf("%c", findTheDifference(a, b));}
最后我完全换了一种思想,不再去找不同,而是比较每一个字母在各自的字符串出现的次数,如果次数不一样,就找到了增加的字母。而且完全解决之前的两个问题,线上测试也完美通过。
运行结果:
实际上这么简单的题目,我一开始是不在意的,但是计算到后面,发现这个问题还真不是看上去这么简单。花费的时间比之前的题目都要长。程序员的辛苦之处就在这里吧—要考虑到各种发生的情况并解决。
阅读全文
0 0
- 找两个字符串中添加的那个字符
- 找到字符串中出现次数最多的那个字符
- 找一个字符串中第一个非重复的字符
- 找字符串中第一个只出现一次的字符
- JS 找字符串中出现次数最多的字符
- 如何获取两个字符串中两个相同的字符
- 删除字符串中相临字符中两个相同的字符
- 给定一个英文字符串,找出这个字符串中首先出现三次的那个英文字符
- 在一些字符串中找特定字符
- 字符矩阵中找字符串路径
- sql中对比两个字符串中缺少的字符
- 查找一个字符串中出现次处最多的那个字符,并输出出现次数
- 从字符串中读取重复最多的那个字符及重复数量方法
- 笔试题1——找到字符串中第一个只出现一次的那个字符
- 搜索某个字符串在那个表的那个字段中
- 搜索某个字符串在那个表的那个字段中
- 搜索某个字符串在那个表的那个字段中
- 搜索某个字符串在那个表的那个字段中
- 客户端浏览器向服务器发起http请求的全过程
- 学生信息管理系统总结
- linux下tar命令解压到指定的目录
- 十大基础排序 · 十 --- 基数排序(稳定)
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
- 找两个字符串中添加的那个字符
- Android Wi-Fi A/N侧解释
- ServletConfig接口介绍
- java序列化深入
- AndroidStudio上面对AIDL的实现
- java后端配合app前端的支付宝和微信支付(逻辑相关代码)
- 课时8 Vi文本编辑器
- Python入门系列——第6篇
- 创建mysql表示例