C++判断两个字符串是否互为旋转词

#include <iostream>
#include <algorithm>
#include <string>

bool isRotation(const std::string& lhs, std::string& rhs);

int main()
{
	std::string lhs, rhs;
	std::cin >> lhs >> rhs;

	std::cout << std::boolalpha << isRotation(lhs, rhs);

	system("pause");
	return 0;
}

bool isRotation(const std::string& lhs, std::string& rhs)
{
	if (lhs.length() < 1 || rhs.length() < 1 || lhs.length() != rhs.length())
		return false;

	rhs += rhs;						//如果两个词互为旋转词 则第一个词一定可以在两个第二个词构成的词中是子串

	if (strstr(rhs.c_str(), lhs.c_str()))
		return true;
	else
		return false;
}


### 关于软考软件设计师中级应用题的相关解析 #### 应用题的特点与考察重点 软考软件设计师中级考试中的应用题通常综合考查考生的实际编程能力、算法设计能力和解决实际问题的能力。这类题目往往涉及以下几个方面: 1. **算法实现** 题目可能要求编写一段完整的代码来解决问题,例如排序算法、查找算法或其他经典算法的变体。例如,在排序算法的选择上,不同场景下适合不同的方法[^3]。 2. **数据结构的设计与运用** 数据结构是解答应用题的重要工具之一。常见的数据结构包括数组、链表、栈、队列、树和图等。这些数据结构常用于构建解决方案的基础框架。 3. **程序调试与优化** 一些题目会提供部分错误的代码片段,要求考生找出其中的问题并修正;或者给出性能较差的代码,让考生对其进行优化。 4. **系统设计与建模** 这类题目可能会涉及到系统的功能需求分析、模块划分以及具体的功能实现逻辑描述。例如,绘制数据流图或UML图以辅助说明设计方案。 --- #### 经典应用题案例及其解析 ##### 案例一:基于给定条件完成特定功能的函数开发 假设有一道典型的应用题如下: > 编写一个函数 `int findMax(int[] array)` 来返回整型数组的最大值。如果输入为空,则抛出异常提示用户重新输入有效数据。 此题旨在测试基本的循环控制语句掌握情况以及边界条件处理技巧。以下是参考答案: ```c++ #include <iostream> using namespace std; // 定义findMax函数 int findMax(int* array, int size){ if(size <=0 ){ throw invalid_argument("Array is empty"); } int maxVal = array[0]; for (int i=1;i<size;i++) { if(array[i]>maxVal){ maxVal=array[i]; } } return maxVal; } int main(){ try{ int data[]={3,-7,89,5}; cout << "最大值:" << findMax(data,sizeof(data)/sizeof(*data))<<endl; }catch(exception& e){ cerr<<"Error:"<<e.what()<<'\n'; } } ``` 上述代码展示了如何通过简单的遍历操作找到数组中的最大值,并加入了必要的异常捕获机制以增强健壮性[^1]。 --- ##### 案例二:字符串匹配问题 另一常见类型为字符串相关运算,比如子串搜索或替换等问题。 > 设计一种高效的方法判断两个字符串是否互为旋转版本(即其中一个可以通过任意次首尾字符移动得到另一个)。如"waterbottle" 和 "erbottlewat" 即满足该关系。 可以利用KMP算法原理简化判定过程,也可以采用更直观的方式——将原字符串拼接自身再检查新串里是否存在目标作为其连续子序列即可达成目的[^2]。 ```python def is_rotation(s1,s2): """Check whether s2 can be obtained by rotating s1.""" if not(len(s1)==len(s2)): return False double_s1=s1+s1 return True if s2 in double_s1 else False print(is_rotation('abcde','cdeab')) # Output:True ``` 以上Python脚本清晰表达了这一概念的核心思想。 --- #### 总结 综上所述,软考软件设计师中级考试中的应用题不仅考验理论知识的记忆程度,更重要的是检验能否灵活运用于实践当中去解决问题。因此平时复习过程中除了熟记各种基础知识点外还需要多做模拟练习提高实战水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值