链接:

题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入的大小写,按字典序排列。

题解:先对输入的单词进行小写化,然后进行排序,如果排序后的字符串相同,那么就剔除。此处建议用map<string,int>类型 注(map中的int会自动初始化为0)

ac代码:第一种:结构体加两个for循环,不建议,代码长又复杂度高(n*n)

#include<iostream>
#include<set>
#include<string>
#include<algorithm>
#include<vector>
#include<sstream>
using namespace std;
struct str
{
string s,ss;
int flag=0;
};
void zu(str &S)
{
S.ss=S.s;
for(int i=0; S.ss[i]!=0; i++)
S.ss[i]=tolower(S.ss[i]);
int len=(S.ss).size();
sort((S.ss).begin(),(S.ss).end());
}
int main()
{
vector<string>vec;
str strin[5500];
int k=0;
string sw;
while(cin>>sw)
{
if(sw=="#") break;
k++;
strin[k].s=sw;
zu(strin[k]);
}
for(int i=1; i<=k; i++)
{
for(int j=i+1; j<=k; j++)
if(strin[j].flag==0&&strin[i].ss==strin[j].ss)
{
strin[j].flag=1;
strin[i].flag=1;
}
}
for(int i=1; i<=k; i++)
if(strin[i].flag==0)
vec.push_back(strin[i].s);
sort(vec.begin(),vec.end());
for(vector<string>::iterator it=vec.begin(); it!=vec.end(); it++)
cout<<*it<<endl;
return 0;
}

改进后用map统计(复杂度仅为k*n)
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
map<string,int> m;
vector<string>k;
vector<string>ans;
string zu(string ss)
{
    string s=ss;
    for(int i=0;s[i]!=0;i++)
        s[i]=tolower(s[i]);
    sort(s.begin(),s.end());
    return s;
}
int main()
{
    string s;
    while(cin>>s)
    {
        if(s=="#") break;
        k.push_back(s);
        string r=zu(s);
        m[r]++;
    }
    for(vector<string>::iterator it=k.begin();it!=k.end();it++)
    {
        if(m[zu(*it)]==1) ans.push_back(*it);
    }
    sort(ans.begin(),ans.end());
    for(vector<string>::iterator it=ans.begin();it!=ans.end();it++)
    {
        cout<<*it<<endl;
    }
    return 0;
}

检查string是否有重复尝试用map的更多相关文章

  1. 尝试用Uplodify

    尝试用Uplodify     Uplodify官方 前台index代码: @{ Layout = null; } <script src="~/Scripts/jquery-1.8. ...

  2. 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能

    [背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...

  3. is not valid JSON: json: cannot unmarshal string into Go value of type map[string]interface | mongodb在windows和Linux导出出错

    执行mongoexport命令的时候 mongoexport --csv -f externalSeqNum,paymentId --host 127.0.0.1:27017 -d liveX -c ...

  4. 【记录】尝试用QEMU模拟ARM开发板去加载并运行Uboot,kernel,rootfs【转】

    转自:https://www.crifan.com/try_use_qemu_emulate_arm_board_to_load_and_run_uboot_kernel_rootfs/ [背景] 手 ...

  5. 使用Set去除String中的重复字符

    使用Set去除String中的重复字符 public class test14 { public static void main(String[] args) { String str = &quo ...

  6. 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框

    尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...

  7. [0]尝试用Unity3d制作一个王者荣耀(持续更新)->游戏规划

    太得闲了于是想写个农药,虽然可能会失败但是还是要试一试. 因为是自学的不是Unity专业的可能表达语言会有些不标准!望见谅! 结构: 以组件式(比如说摇杆控制和玩家部分的编写是分离的,可以自由拼装)作 ...

  8. 【rt-thread】2、尝试用ENV添加18b20传感器

    尝试用ENV添加18b20传感器 rt-thread能通过env工具添加或者裁剪工程,这里调试的是通过ENV添加18b20传感器. 具体程序实现,可以参考以下资料 https://www.rt-thr ...

  9. 尝试用kotlin做一个app(二)

    导航条 我想实现的效果是这样的 类似于ViewPager的效果,子类导航页面可以滑动,当滑动某个子类导航页面,导航线会平滑地向父类导航移动 ·添加布局 <!--导航分类:编程语言/技术文档/源码 ...

随机推荐

  1. ThinkPHP5使用阿里云OSS图片上传

    1.下载OSS文件放在网站根目录下(OSS文件下载地址:https://gitee.com/jth1234/oss_files.git) 2.在入口文件中加载OSS 3.config文件配置oss信息 ...

  2. MySQL一招入门

    连接mysql数据库命令:mysql -u root -p 创建mysql数据库:create databaase xx库; 创建mysql表: create table db_xx表( id int ...

  3. Java基础:变量、常量、作用域

    JAVA基础:变量.常量.作用域 变量:可以变化的量.Java是强类型语言,每个变量都必须声明类型. Java变量是程序中最基本的存储单元,要素包括变量名,类型和作用域. //类变量 static s ...

  4. python变量拷贝

    写python代码时候,如:A = 0,B = A,B = 1, 有时候会发现A变成了1,那么怎么办呢? 以下是伪代码: import copy ... X_ = copy.copy(X) ... 这 ...

  5. JavaScript基础原始数据类型的封装对象(013)

    JavaScript提供了5种原始数据类型:number, string, boolean, null, and undefined.对于前面3个,即number, string, 和boolean提 ...

  6. 常用的rac搭建相关

    平时自己测试环境搭建用,部分参数是不规范的. 生产请按照官方文档或者公司标准化文档来做. 共享硬盘: disk.locking = "FALSE" diskLib.dataCach ...

  7. 烦人的B数

    B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点: B-树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点: 所有关键字在整颗树中出现, ...

  8. JVM源码分析之堆内存的初始化

    原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 “365篇原创计划”第十五篇. ​ 今天呢!灯塔君跟大家讲: JVM源码分析之堆内存的初始化   堆初始化 Java堆的初始化入口位于Univ ...

  9. P2607[ZJOI2008] 骑士 题解

    题目 Z 国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的 Y 国发动了一场针对 Z 国的侵略战争.战火绵延五 ...

  10. 洛谷P3237 米特运输

    题目链接 题意: 中文题,挺好理解.就是让节点的权值等于各子节点权值之和,然后每个子节点的权值相等,原本每个点有一个权值,通过最少次的修改(可以修改成小数)使其满足要求. 分析: 题意一旦读明白,题什 ...