【题目链接】

ybt 1141:删除单词后缀
OpenJudge NOI 1.7 20:删除单词后缀

【题目考点】

1. 字符串处理

2. string类成员函数

  • 取子串:substr(起始位置, 子串长度)
  • 删除字符:
    erase(删除起始位置, 删除长度)
    erase(删除起始位置) :从删除起始位置开始一直删除到末尾

【题解代码】

解法1:用字符数组

  1. 获取该字符串后三个字符
  • 字符串s长度为len时,它的后三个字符分别为s[len - 3], s[len - 2], s[len - 1]
  • 判断后三个字符如果是er,ly,在字符串倒数第2位置,即s[len-2]位置改为’\0’,这样就删掉了后两个字符。如果是ing,在倒数第3位置,即s[len-3]位置改为’\0’,这样就删除了后3个字符。
#include<bits/stdc++.h>
using namespace std;
int main()
{char s[50], c3, c2, c1;//c3~c1是倒数第3,2,1个字符 cin>>s;int len = strlen(s);c1 = s[len-1];c2 = s[len-2];c3 = s[len-3];if(c3 == 'i' && c2 == 'n' && c1 == 'g')s[len-3] = '\0';else if(c2 == 'e' && c1 == 'r' || c2 == 'l' && c1 == 'y')s[len-2] = '\0';cout<<s;return 0;
}

解法2:用string类

  1. 使用取子串方法,取单词后2个字符。如果是"ly"或"er",用删除方法删除这2个字符。
  2. 使用取子串方法,取单词后3个字符。如果是"ing",用删除方法删除这3个字符。
#include<bits/stdc++.h>
using namespace std;
int main()
{string s, s1;cin>>s;if(s.length() >= 3)//输入数据可能长度小于3,那时再用s.substr(s.length()-3, 3)截取字符串会出错。{s1 = s.substr(s.length()-3, 3);//取后3个字符if(s1 == "ing")s = s.erase(s.length()-3);//从s.length()-3开始一直删除到末尾else{s1 = s.substr(s.length()-2, 2);//取后两个字符if(s1 == "ly" || s1 == "er")//string类重载了==运算符,可以让string类对象和字符数组常量进行比较s = s.erase(s.length()-2);}}cout<<s;return 0;
}

信息学奥赛一本通 1141:删除单词后缀 | OpenJudge NOI 1.7 20相关推荐

  1. 信息学奥赛一本通 1185:单词排序 | OpenJudge NOI 1.10 10:单词排序

    [题目链接] ybt 1185:单词排序 OpenJudge NOI 1.10 10:单词排序 [题目考点] 1. 排序 [君义精讲]排序算法 2. 字符串比较 字符数组比较: char s1[N], ...

  2. 信息学奥赛一本通 1144:单词翻转 | OpenJudge NOI 1.7 27

    [题目链接] ybt 1144:单词翻转 OpenJudge NOI 1.7 27:单词翻转 [题目考点] 1.多字符串处理 用二维字符数组保存多个字符串 用string类数组保存多个字符串 用指针数 ...

  3. 信息学奥赛一本通 1406:单词替换 | OpenJudge NOI 1.7 21:单词替换

    [题目链接] ybt 1406:单词替换 OpenJudge NOI 1.7 21:单词替换 [题目考点] 1. 多字符串处理 读入字符串时可以选择方法 先读入整个字符串,而后遍历字符串,遇到空格时取 ...

  4. 信息学奥赛一本通 1209:分数求和 | OpenJudge NOI 1.13 12:分数求和

    [题目链接] ybt 1209:分数求和 OpenJudge NOI 1.13 12:分数求和 [题目考点] 1. 求最大公约数 2. 求最小公倍数 [解题思路] 求最大公约数,可以用辗转相除法.具体 ...

  5. 信息学奥赛一本通 1294:Charm Bracelet | OpenJudge NOI 2.6 7113:Charm Bracelet | 洛谷 P2871

    [题目链接] ybt 1294:Charm Bracelet OpenJudge NOI 2.6 7113:Charm Bracelet 洛谷 P2871 [USACO07DEC]Charm Brac ...

  6. 信息学奥赛一本通 1173:阶乘和 | OpenJudge NOI 1.6 15 | 洛谷 P1009 [NOIP1998 普及组] 阶乘之和

    [题目链接] ybt 1173:阶乘和 注:一本通上这题,应该把n≤50n\le50n≤50当做n≤100n\le100n≤100来看 OpenJudge NOI 1.6 15:阶乘和 洛谷 P100 ...

  7. 信息学奥赛一本通 1198:波兰表达式 | OpenJudge NOI 2.2 1696:波兰表达式

    [题目链接] ybt 1198:波兰表达式 OpenJudge NOI 2.2 1696:波兰表达式 注:ybt上描述的其实是波兰表达式,而题目中的文字都是逆波兰表达式,是笔误了,应该当做波兰表达式看 ...

  8. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River

    [题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...

  9. 信息学奥赛一本通 1194:移动路线 | OpenJudge NOI 2.6 2718:移动路线

    [题目链接] ybt 1194:移动路线 OpenJudge NOI 2.6 2718:移动路线 [题目考点] 1. 坐标型动态规划 [解题思路] 解法1:递推 设状态数组dp,dp[i][j]表示从 ...

最新文章

  1. 如何用bat文件快速计算项目代码行数
  2. 3、Java常用关键字
  3. cmake + visual studio 配置出错的解决方法
  4. JavaScript——易班优课YOOC课群在线测试自动答题解决方案(十五)整合升级+引入jQuery
  5. 【算法竞赛学习】学术前沿趋势-论文作者统计
  6. ecos(redboot)移植剖析
  7. NASA公布“门户计划”,在月球轨道建立空间站进一步探索月球
  8. java常用的统计_(OJ)Java常用类-统计数字次数
  9. jquery-自定义通用方法-jquery通用方法-所有对象的通用方法
  10. VIM编辑器使用图解
  11. 《Mastering opencv....读书笔记》基于标记的虚拟现实
  12. 67.Systemd 实战
  13. KnockoutJS 3.X API 第七章 其他技术(3) 延迟更新
  14. 一款游戏自动脚本的封包算法分析(易语言)
  15. 10大改变世界的未来科技
  16. 大话2口袋版不显示服务器,大话西游2新口袋版操作指引及常见问题说明
  17. openid无效什么意思_通过微信公众号认识一个漂亮的女朋友是什么体验?
  18. jQuery 选择器 选取第一个 p 元素
  19. iframe的滚动条隐藏后仍可滑动
  20. arduino 读取模拟电压_Arduino内置教程-基本原理-读取模拟电压

热门文章

  1. gui编程实践(2)--qq聊天界面 JTextArea多行文本框组件
  2. “年薪25万只是白菜价”已成过去式,AI 岗位年薪下降8.9%!
  3. dsp广告和信息流广告区别_360展示广告与其他信息流平台的区别
  4. Spring官方都说废掉GuavaCache用Caffeine,你还不换?
  5. 二月,劝 Java 工程师不要跳槽!
  6. InnoDB自增原理都搞不清楚,还怎么CRUD?
  7. “既生 ExecutorService, 何生 CompletionService?”
  8. 跟我极速尝鲜 Spring Boot 2.3
  9. 原创|我以为我对Mysql索引很了解,直到我遇到了阿里的面试官
  10. Linux基本操作——VI和VIM