Winter-2-STL-F Ananagrams 解题报告及测试数据
题解:
去掉输入过程中重复的单词,需要对统一小写后的单词排序,例如 aab cdf frf aab AaB,小写排序后是aab aab aab cad frf,那么很容易遍历一遍进行标记,将输入重复的单词只保留一个。
寻找回文,例如adc cda utg 三个单词,对每一个单词进行字母排序后再整体排序,排序结果是:acd acd gtu ,出现次数大于一次的很显然是回文, 那么和上面一样,很容易遍历2遍后将出现次数大于一次的单词去掉。最后剩下的就是非回文。然后对非回文进行排序输出即可。
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cctype>
using namespace std;
string ss[10000];
char s[100];
int k,k2,tag[10000];
struct Node{
string ori,low,sor;//ori原始输入,low小写处理,sor字母排序
}str[10000];
bool cmp1(Node a,Node b){//按照小写后单词进行排序处理
return a.low < b.low;
}
bool cmp2(Node a,Node b){//按照字母排序后的单词排序处理
return a.sor < b.sor;
}
void set(Node&b,Node&a){//赋值操作
b.ori = a.ori;b.low = a.low;b.sor=a.sor;
}
int main(){
//freopen("1.in","r",stdin);
while(scanf("%s",s)!=EOF && s[0]!='#'){
str[k].ori = s;
for(int i=0;s[i];i++)s[i]=tolower(s[i]);
str[k].low = s ;//小写
sort(s,s+strlen(s));
str[k++].sor = s;//排序
}
//对小写后的单词进行排序,目的是去除输入过程中重复的单词
sort(str,str+k,cmp1);
string pre = "";
for(int i=0;i<k;i++){
if(str[i].low == pre)tag[i]=1;
pre = str[i].low;
}
for(int i=0;i<k;i++){
if(!tag[i])set(str[k2++],str[i]);
else tag[i]=0;
}
//对字母排序后的单词排序,目的是寻找回文单词
k = k2;
sort(str,str+k,cmp2);
pre = "";
for(int i=0;i<k;i++){
if(str[i].sor == pre)tag[i]=1;
pre = str[i].sor;
}
for(int i=0;i<k;i++)
if(tag[i])tag[i-1]=1;
k2=0;
for(int i=0;i<k;i++)
if(!tag[i])ss[k2++]=str[i].ori;
//最后对原始输入排序输出。
sort(ss,ss+k2);
for(int i=0;i<k2;i++)
cout << ss[i]<<endl;
}
Winter-2-STL-F Ananagrams 解题报告及测试数据的更多相关文章
- sgu 104 Little shop of flowers 解题报告及测试数据
104. Little shop of flowers time limit per test: 0.25 sec. memory limit per test: 4096 KB 问题: 你想要将你的 ...
- Spring-1-I 233 Matrix(HDU 5015)解题报告及测试数据
233 Matrix Time Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Descript ...
- Spring-1-H Number Sequence(HDU 5014)解题报告及测试数据
Number Sequence Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Pro ...
- Spring-1-F Dice(HDU 5012)解题报告及测试数据
Dice Time Limit:1000MS Memory Limit:65536KB Description There are 2 special dices on the table. ...
- Spring-1-E Game(HDU 5011)解题报告及测试数据
Game Time Limit:1000MS Memory Limit:65536KB Description Here is a game for two players. The rule ...
- Spring-1-A Post Robot(HDU 5007)解题报告及测试数据
Post Robot Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K Problem Description ...
- Winter-1-F Number Sequence 解题报告及测试数据
Time Limit:1000MS Memory Limit:32768KB Description A number sequence is defined as follows:f(1) ...
- sgu 103 Traffic Lights 解题报告及测试数据
103. Traffic Lights Time limit per test: 0.25 second(s) Memory limit: 4096 kilobytes 题解: 1.其实就是求两点间的 ...
- Spring-2-H Array Diversity(SPOJ AMR11H)解题报告及测试数据
Array Diversity Time Limit:404MS Memory Limit:0KB 64bit IO Format:%lld & %llu Descript ...
随机推荐
- Spring Cache 自定义注解
1.在使用spring cache注解如cacheable.cacheevict.cacheput过程中有一些问题: 比如,我们在查到一个list后,可以将list缓存到一个键对应的区域里:当新增.修 ...
- Nuget包制作最佳解决方案
https://www.cnblogs.com/drea/p/8418717.html 最近研究ABP框架,下载其全套源码,想“据为己有”,这样添加功能或者修改源码的话就非常方便了,否则搭建项目直接用 ...
- [深入理解Android卷一全文-第八章]深入理解Surface系统
由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版.而知识的传播不应该由于纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容. ...
- Jquery-easyUi------(布局)
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> <! ...
- iOS开发之--当遇到tableView整体上移时的解决方案
方案一在使用了navigationController后,当界面进行跳转往返后,时而会出现tableView上移的情况,通常会自动上移64个像素,那么这种情况,我们可以关闭tableView的自动适配 ...
- Python 正则表达式规则
正则表达式的一些匹配规则: . :用于匹配任意一个字符,如 a.c 可以匹配 abc .aac .akc 等^ :用于匹配以...开头的字符,如 ^abc 可以匹配 abcde .abcc .abca ...
- andriod的apk文件相关的编译反编译工具
1.smali-1.2.6.jar 用途:.smali文件 转成 classes.dex文件 说明:.smali文件,类似于.class文件,可以用普通文本编辑器查看和修改. 用法举例:命令行:jav ...
- Nginx应用-Location路由反向代理及重写策略 请求转发-URL匹配规则 NGINX Reverse Proxy
NGINX Docs | NGINX Reverse Proxy https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ ...
- Random/Stochastic
---恢复内容开始--- ===================================================== A random variable's possible valu ...
- php 安装yaf扩展和yaf框架
一.安装yaf扩展(windows安装) 1.查看你电脑安装的开发环境(phpinfo()的信息),查找 "Zend Extension Build"和"PHP Exte ...