检查string是否有重复尝试用map
链接:
题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入的大小写,按字典序排列。
题解:先对输入的单词进行小写化,然后进行排序,如果排序后的字符串相同,那么就剔除。此处建议用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的更多相关文章
- 尝试用Uplodify
尝试用Uplodify Uplodify官方 前台index代码: @{ Layout = null; } <script src="~/Scripts/jquery-1.8. ...
- 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
[背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...
- 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 ...
- 【记录】尝试用QEMU模拟ARM开发板去加载并运行Uboot,kernel,rootfs【转】
转自:https://www.crifan.com/try_use_qemu_emulate_arm_board_to_load_and_run_uboot_kernel_rootfs/ [背景] 手 ...
- 使用Set去除String中的重复字符
使用Set去除String中的重复字符 public class test14 { public static void main(String[] args) { String str = &quo ...
- 尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框
尝试用React写几个通用组件 - 带搜索功能的下拉列表,开关切换按钮,弹出框 近期正在逐步摸索学习React的用法,尝试着写几个通用型的组件,整体项目还是根据webpack+react+css-me ...
- [0]尝试用Unity3d制作一个王者荣耀(持续更新)->游戏规划
太得闲了于是想写个农药,虽然可能会失败但是还是要试一试. 因为是自学的不是Unity专业的可能表达语言会有些不标准!望见谅! 结构: 以组件式(比如说摇杆控制和玩家部分的编写是分离的,可以自由拼装)作 ...
- 【rt-thread】2、尝试用ENV添加18b20传感器
尝试用ENV添加18b20传感器 rt-thread能通过env工具添加或者裁剪工程,这里调试的是通过ENV添加18b20传感器. 具体程序实现,可以参考以下资料 https://www.rt-thr ...
- 尝试用kotlin做一个app(二)
导航条 我想实现的效果是这样的 类似于ViewPager的效果,子类导航页面可以滑动,当滑动某个子类导航页面,导航线会平滑地向父类导航移动 ·添加布局 <!--导航分类:编程语言/技术文档/源码 ...
随机推荐
- python创建DataFrame,并实现DataFrame的转置
>>> import pandas as pd >>> import numpy as np >>> x1 = {1: 106, 2: 3, 7: ...
- FRP+WoL实现远程开机+远程桌面
FRP+WoL实现远程开机+远程桌面 故事背景 这是一个很复杂而且很久远的故事,如果要讲的话,这个故事可以追溯到1981年(「都是废话,没有干货,如果不感兴趣请从第二章开始」),简单来说: 1981年 ...
- python数据结构(三)
copy 复制对象,copy模块包含了两个行数copy和deepcopy,用于复制现有的对象. 浅副本(浅复制) copy()创建的浅副本是一个新容器,其中填充了原对象内容的引用 import cop ...
- python之shutil模块的使用
shutil模块 shutil模块是一种高级的文件操作工具,其对文件的复制与删除操作非常强大,shutil 名字来源于 shell utilities,该模块拥有许多文件(夹)操作的功能,包括复制.移 ...
- Python3笔记006 - 2.3 变量
第2章 python语言基础 python语法特点 保留字与标识符 变量 数据类型 运算符 输入和输出 2.3 变量 在python中,不需要先声明变量类型,直接赋值即可创建各种类型的变量. 1.定义 ...
- Spring Security 实战干货:图解Spring Security中的Servlet过滤器体系
1. 前言 我在Spring Security 实战干货:内置 Filter 全解析对Spring Security的内置过滤器进行了罗列,但是Spring Security真正的过滤器体系才是我们了 ...
- 传参问题-HttpMessageNotReableException
很久没写后台代码,用postMan测试后台接口的时候出现了一个问题: 问题如下: 显而易见是参数问题,我的参数如下图: 我调整参数样式为: 但还是存在问题. 最后调整成用双引号,结果对了.之前没有注意 ...
- Buy A Ticket(图论)
Buy A Ticket 题目大意 每个点有一个点权,每个边有一个边权,求对于每个点u的\(min(2*d(u,v)+val[v])\)(v可以等于u) solution 想到了之前的虚点,方便统计终 ...
- 3.第一个scrapy项目
第一个scrapy项目 1. 创建scrapy项目 1.1 创建项目三剑客 这里的三剑客指的是:创建项目以及运行项目的三条命令 1.1.1 创建项目 scrapy stratproject 项目名称 ...
- 选择困难症必看!云服务器如何选择操作系统,Windows和Linux哪个更好?
在购买云服务器时,会有一个必选的配置,就是操作系统的选择,如何选择操作系统?操作系统选择错了怎么办?这是不少用户会遇到的问题,今天我们就来教大家如何选择操作系统,以及操作系统选择错了,该怎么切换. W ...