noi-8177-删除单词后缀

本文介绍了一个简单的程序,用于处理以特定后缀(er、ly、ing)结尾的单词,通过删除这些后缀来简化单词形式。程序接收一个单词作为输入,并检查其是否以这些后缀结束,如果是,则移除后缀;如果不是,则保持原样输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

删除单词后缀


总时间限制: 
1000ms 
内存限制: 
65536kB
描述

给定一个单词,如果该单词以er、ly或者ing后缀结尾, 则删除该后缀(题目保证删除后缀后的单词长度不为0), 否则不进行任何操作。

输入
输入一行,包含一个单词(单词中间没有空格,每个单词最大长度为32)。
输出
输出按照题目要求处理后的单词。
样例输入
referer
样例输出
refer
来源
北京大学医学部计算概论08期末考试题

//noi_8177
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<iomanip>

using namespace std;

int main(){
	string s1;
	cin>>s1;
	int i=s1.length();
	if(s1[i-1]=='y'&&s1[i-2]=='l'){

		for(int j=0;j<i-2;j++) cout<<s1[j];
	}	
	else if(s1[i-1]=='r'&&s1[i-2]=='e'){

		for(int j=0;j<i-2;j++) cout<<s1[j];
	}	
	else if(s1[i-1]=='g'&&s1[i-2]=='n'&&s1[i-3]=='i'){

		for(int j=0;j<i-3;j++) cout<<s1[j];
	}
	else cout<<s1;
	return 0;
}


### 关于NOI金牌导航中的字符串算法与后缀数组 在处理涉及多个字符串连接并构建其后缀数组的问题时,一种有效的方法是在这些字符串之间插入不同的分隔符[^1]。此方法确保了即使原始字符串内部存在重复部分,在计算后缀数组过程中仍能区分来自不同源字符串的部分。 对于具体实现而言,当面对需要高效查询和匹配的任务时,除了基本的后缀数组外,还可以考虑使用更高级的数据结构如广义SAM(Suffix Automaton),这有助于统计本质不同的子串数量以及其他复杂的模式识别操作[^3]。然而值得注意的是,并不是所有情况下都适合采用最复杂的数据结构;有时简单的基于后缀数组的操作已经能够满足需求,尤其是在时间复杂度要求较为严格的情况下——例如通过二分法配合后缀分组来解决问题可以达到\(O(n\log n)\)的时间效率。 针对特定应用场景下的性能优化也至关重要。某些场景下,尽管理论上可行的做法可能因为实际输入特性而表现不佳,比如高度随机化的Height数组可能导致较高复杂度算法超时(TLE),此时就需要根据具体情况调整策略以适应数据特点[^5]。 ```cpp // 示例代码:简单展示如何创建两个字符串之间的后缀数组 #include <iostream> #include <vector> #include <string> using namespace std; void build_suffix_array(const string &text, vector<int> &suffixArray){ int n = text.size(); suffixArray.resize(n); // 构造后缀数组逻辑... } int main(){ string s1="abc",s2="def"; char separator='#'; // 假设'#'不在任何给定字符串内出现 string combinedString=s1+separator+s2; vector<int> sa; build_suffix_array(combinedString,sa); cout << "Combined String with Separator: " << combinedString << endl; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值