算法 字符串【英语老师的单词卡消除】
一、题目描述
英语老师有无数张单词卡,每张卡片上有一个小写英文单词。现在将卡片打乱,然后依次排成一串:
如:AEEECCFFFCD
每三张连续相同的卡片可以消除,
上述案例最后可以消除成:AD
如果一串可以完全消除成功,则输出0;
如果一串无法完全消除,则输出其消除完所有可消除的单词卡后,剩下的有序串。
二、思路
首先要有一个判断函数,
这个函数的功能是判断所给字符串能否进行消除。如果能,则返回消除的那三个字母的前一个字母的下标;如果不能,则返回-1。
还需要一个判断长度函数。
然后在主函数中进行循环判断。
每一次若可消除,则使用字符串切割函数,截取头与尾,切割掉可消除的三个连续字母,
再使用字符串拼接,将原串变成切割后的子串。
重复上述步骤,直到无法再进行消除。
退出循环后,查看剩余字符串的长度:
如果为0,则说明消除成功;
如果不为0,则说明消除不彻底,输出即可。
三、代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <iostream>
#include <vector>
#include <string>using namespace std;int getLength(string s)
{int length = 0;string::iterator it = s.begin();while (it != s.end()){it++;length++;}return length;
}//临时串的判定
bool judgeRest(string ret)
{int length = getLength(ret);if (length >= 3){//仅有倒数三个值相同,才是可消除的。唯一true出口if (ret[length - 1] == ret[length - 2] && ret[length - 2] == ret[length - 3]){return true;}else{return false;}}else{return false;}
}//主串的判定
int judgeString(string s)
{string ret;int length = getLength(s);//当前元素的下标int location = 0;bool flag = false;for (int i = 0; i < length; i++){flag = false;ret += s[i];location++;if (judgeRest(ret)){flag = true;break;}}if (flag == true){//返回切割起点return location - 3;}else{return -1;}
}int main()
{string a;cin >> a;while (judgeString(a) != -1){int length = getLength(a);int location = judgeString(a);string front = a.substr(0, location);string back = a.substr(location + 3);a = front + back;}if (getLength(a) == 0){cout << '0';}else{cout << a;}return 0;
}
运行截图:
算法 字符串【英语老师的单词卡消除】相关推荐
- C语言字符串中最后一个单词的长度的算法(附完整源码)
C语言字符串中最后一个单词的长度的算法 C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) C语言字符串中最后一个单词的长度的算法完整源码(定义,实现,main函数测试) ...
- 【making tools】:算英语文章中单词个数,给英语老师使用
这个程序实现的功能非常之简单,就是查找文件里面有多少个单词. 思路如下:按行读取,然后利用空格 + 英文字母的方法定义每一个单词,大致利用这种思路,就能统计出文件里面有多少个单词,但是这里出了一个问题 ...
- 如何检查字符串是否包含特定单词?
考虑: $a = 'How are you?';if ($a contains 'are')echo 'true'; 假设我有上面的代码, if ($a contains 'are') ,写语句的正确 ...
- ##英语文本的单词统计 排序并输出前5%
## 英语文本的单词统计 排序并输出前5% /*统计英语文本英语个数及150%***************************************************** *//* /* ...
- 小学英语教学c语言,小学英语老师常用的课堂操练游戏100例
原标题:小学英语老师常用的课堂操练游戏100例 如果您是一位热心于辅导孩子学习英语的家长,下边有些游戏也不妨用一用,不是仅限于教室哦~ 1.模仿秀 imitate show 游戏说明:教师带领学生一起 ...
- 程序设计与算法郭炜老师的课堂笔记1
程序设计与算法郭炜老师的课堂笔记1 基础 与或非 位运算 字符串操作库函数 strtok尝试 字符串0新认识 void 指针无定义 快排 变量 排序 Vector vector示例 用**vector ...
- 9.9能买什么?80节北美外教AI课+158张单词卡+6张卡通贴纸+1张字母表+Leo单肩小书包........
(80节课程有效期7天) 1 说好的优惠,最后都是套路 孩子3岁以后,最头疼的就是宝妈们了:孩子要学英语么,英语怎么科学启蒙?要不要找外教?孩子太小听不懂怎么办? 市面上五花八门的英语启蒙课程,宝妈们 ...
- 初中英语多词性单词怎么办_高考英语阅读理解生僻单词太多怎么办?十大招数帮到你...
英语阅读理解生僻单词太多怎么办?今天,胡老师告诉你猜词十大招数,帮助同学们英语考试拿高分. 01 构词法 阅读中常常会遇到一些由熟悉的单词派生或合成的新词.掌握构词法对猜测词义很有帮助.如:unf ...
- 【作业】随机数+参数可变的方法+实验任务(输出素数+使用递归,判断是否为回文+统计一篇英语问斩单词出现频率)...
(1)随机数 取余的m很大可以保证随机的更彻底,更不容易重复 1 import java.util.Scanner; 2 public class Text_001 3 { 4 5 public st ...
最新文章
- 网页静态化技术Freemarker
- 测试MindMotion 的 ISP功能 - 无法进入ISP功能
- 搞懂分布式技术19:使用RocketMQ事务消息解决分布式事务
- asp.net url 重写解决方案
- Linker Scripts3--简单的链接脚本命令2-Assigning Values to Symbols
- 2012年初的10个绝对让你惊喜的jQuery插件
- 《防患未然:实施情报先导的信息安全方法与实践》——2.8 小结
- JavaScript实现快速排序
- 火焰传感器感应有火亮灯代码_智能无线感应灯火了,光感人感2种传感器感应,做照明品牌的几光...
- 基于最大最小距离的分类数目上限K确定的聚类方法
- ASP.NET 2.0中实现跨页面提交
- Ubuntu中使用VS Code
- 【UVA10603】Fill(优先队列+状态转移)
- 有什么软件可以快速测试到苹果,苹果官方App测试工具TestFlight
- 微软操作系统 Windows Server 2012 R2 官方原版镜像
- C盘pc的Android文件夹,清理系统盘C盘的无用文件
- Using the Hardware Scaler for Performance and Efficiency
- 64位服务器采购全攻略
- re python 引擎_转 python内置正则表达式(re)模块官方文档简要中文版
- 计算机视觉要掌握哪些知识,学习了哪些知识,计算机视觉才算入门?
热门文章
- matlab 绘制一个可爱的胖娃娃
- 华为荣耀鸿蒙出自,华为鸿蒙并没有忘记荣耀,荣耀在前三批之列,网友:毕竟是一家人!...
- 添加光效——颜色减淡法
- 网络管理怎么配置路由
- 英伟达“核弹”再次来袭?Web3.0最高8万招聘,周星驰也来了/文本生成图像引“掐架”……...
- 数字图像处理Python语言实现-图像增强-各向异性扩散滤波
- 还在用单脚助力?你该换一副悬浮滑板了
- 北宋君臣关系及前期政治
- 龙珠觉醒手游怎么用电脑玩 龙珠觉醒安卓模拟器教程
- Cadence_焊盘Pad制作1_表贴焊盘制作