网易笔试编程题:小易喜欢的单词(C++)
2016-08-27 23:11
369 查看
题目:
小易喜欢的单词具有以下特性:1.单词每个字母都是大写字母
2.单词没有连续相等的字母
3.单词没有形如“xyxy”(这里的x,y指的都是字母,并且可以相同)这样的子序列,子序列可能不连续。
例如:
小易不喜欢”ABBA”,因为这里有两个连续的’B’
小易不喜欢”THETXH”,因为这里包含子序列”THTH”
小易不喜欢”ABACADA”,因为这里包含子序列”AAAA”
小易喜欢”A”,”ABA”和”ABCBA”这些单词
给你一个单词,你要回答小易是否会喜欢这个单词。
输入描述:
输入为一个字符串,都由大写字母组成,长度小于100输出描述:
如果小易喜欢输出”Likes”,不喜欢输出”Dislikes”输入例子:
AAA输出例子:
Dislikes分析:
前两个条件“单词每个字母都是大写字母”和“单词没有连续相等的字母”比较容易判断,一个for循环解决。第3个条件可以通过先把字符串的只出现一次的字符去掉,剩下的字符判断是不是ABAB的形式。
答案:
#include <iostream> #include <string> using namespace std; int main(){ string a; cin>>a; //下面的for循环只到a.length()-2,所以额外判断a.length()-1 if (a[a.length()-1]<'A' || a[a.length()-1]>'Z') { cout<<"Dislikes"<<endl; return 0; } for (int i=0; i<a.length()-1; i++) { if (a[i]<'A' || a[i]>'Z') {//是否都是大写字母 cout<<"Dislikes"<<endl; return 0; } if ( a[i]==a[i+1]) {//是否有连续相等字母 cout<<"Dislikes"<<endl; return 0; } for (int j=i+1; j<a.length(); j++) {//将只出现一次的字母替换为‘0’,如THETXH替换为TH0T0H if (a[i]==a[j]) continue; a.replace(i, 1, "0"); } } //将为'0'字符的删掉,变成THTH for (int i=0; i<a.length(); i++) { if(a[i]=='0'){ a.erase(i,1); } } if (a.length()<1) { cout<<"Dislikes"<<endl; return 0; } //找出跟第0个位置一样的字符,记住它位置 int j; for (int i=1; i<a.length(); i++) { if (a[i]==a[0]) { j=i; break; } } //判断每一次字符串是不是重复出现 for (int i=0; i<j; i++) { if(a[i]!=a[i+j]){ cout<<"Dislikes"<<endl; return 0; } } cout<<"Likes"<<endl; return 0; }
相关文章推荐
- 网易2018校招笔试_小易喜欢的数列_C++
- 网易编程题——小易喜欢的单词
- 网易笔试编程-小易喜欢的单词
- 网易笔试题:小易喜欢的单词
- 网易笔试编程题:最少时间落入陷阱(C++)
- 解救小易----网易2017内推笔试编程题合集(二)
- 网易笔试编程题:统计回文(C++)
- 网易2017内推 [编程题]小易喜欢的数列
- 8.12网易内推笔试题:小易喜欢的数列 java实现
- 网易笔试编程题:两种排序方法(C++)
- 【网易2017实习生编程题】 工作安排 集合 奇怪的表达式求值 涂棋盘 小易记单词
- 2017网易内推c++工程师笔试——编程题
- 网易—小易喜欢的单词
- 网易笔试编程题:到Fibonacci数最小步数(C++)
- 【Python】 网易笔试编程题(记单词)
- 网易笔试题编程题--小易的升级之路
- 网易2017春招编程题:小易记单词 [python]
- 网易笔试:小易喜欢的数列
- 网易2016软件工程师笔试题-----[编程题] 奖学金(C++实现)
- 网易2017暑期实习生招聘笔试编程题之小易背单词