• I
  • J

I: Carryon的字符串

时间限制: 1 s      内存限制: 128 MB     

提交 我的状态

题目描述

Carryon最近喜欢上了一些奇奇怪怪的字符,字符都是英文小写字母,但奇怪的是a可能比b小,也可能比b大,好奇怪。与此同时,他拿到了好多的字符串,可是看着很不顺眼,因为他们很乱,所以他想将这些字符串按字典序从小到大排下序,这样就好看多了。由于a可能比b小,也可能比b大,这样按常规方法肯定是不行的,幸运的是他破解了26个字母的大小顺序,这样他就开开心心的将字符串从小到大排序了。

输入

第一行输入2626个字符的大小顺序

第二行输入一个n(1≤n≤105)n(1≤n≤105)。

接下来nn行,每行一个字符串sisi,数据保证每个字符串不重复。(1≤∑i=1nlen(si)≤3×105)(1≤∑i=1nlen(si)≤3×105)

输出

将n个字符串按字典序从小到大输出。

样例输入

abcdefghijklmnopqrstuvwxyz
5
bcda
licj
lin
aaaa
aaaaa

样例输出

aaaa
aaaaa
bcda
licj
lin
思路:这题主要讲一下string字符串的存储和在结构体里面的使用,这题也让我直到了char和string的差别,这题用char的话会报错,数组开的太大了,只能在结构体里面开string那么思路呢?   就是用一个数组,其实就是按照题目给出的大小标准,把题目中的大小转化为a~z,把当前字符串转换成由a~z按正常大小组成的字符串,具体看代码
#include<iostream>
#include<string.h>
#include<map>
#include<cstdio>
#include<cstring>
#include<stdio.h>
#include<cmath>
#include<ctype.h>
#include<math.h>
#include<algorithm>
#include<set>
#include<queue>
typedef long long ll;
using namespace std;
const ll mod=1e9+7;
const int maxn=1e5+10;
const int maxk=3e5+10;
const int maxx=1e4+10;
const ll maxe=1000+10;
#define INF 0x3f3f3f3f3f3f
#define Lson l,mid,rt<<1
#define Rson mid+1,r,rt<<1|1
char a[26];
char s[26];
struct p
{string x,y;//这题只能用string,如果用数组会报错
}b[maxn];
bool cmp(const p a,p b)
{return a.y<b.y;
}
int main()
{cin>>a;for(int i=0;i<26;i++)//这一步就是把当前字符串改为按照a~z大小的字符串
    {int x=a[i]-'a';s[x]='a'+i;}int n;cin>>n;for(int i=0;i<n;i++){cin>>b[i].x;int len=b[i].x.length();for(int j=0;j<len;j++){int z=b[i].x[j]-'a';b[i].y+=s[z];//这里就是把原来串改为按照a~z正常大小的另外一个串
        }}sort(b,b+n,cmp);for(int i=0;i<n;i++)cout<<b[i].x<<endl;return 0;
}

转载于:https://www.cnblogs.com/caijiaming/p/9468263.html

Carryon的字符串相关推荐

  1. Redis 笔记(11)— 文本协议 RESP(单行、多行字符串、整数、错误、数组、空值、空串格式、telnet 登录 redis)

    RESP 是 Redis 序列化协议Redis Serialization Protocol 的简写.它是一种直观的文本协议,优势在于实现异常简单,解析性能极好. ​ Redis 协议将传输的结构数据 ...

  2. Go 知识点(16)— 将枚举值转换为字符串

    package mainimport "fmt"// 将 int 声明 为 ChipType 芯片类型. type ChipType intconst (None ChipType ...

  3. HJ75 公共字符串计算

    描述 给定两个只包含小写字母的字符串,计算两个字符串的最大公共子串的长度. 注:子串的定义指一个字符串删掉其部分前缀和后缀(也可以不删)后形成的字符串. 输入描述: 输入两个只包含小写字母的字符串 输 ...

  4. C++ 笔记(36)— 接收输入字符串的几种方法

    C++中常见的几种输入字符串的方法如下: std::cin.std::cin.get().std::cin.getline().std::getline().std::gets().std::getc ...

  5. 算法基础(09)— 字符串常用操作

    1. 字符串定义 字符串 string 是由 n 个字符组成的一个有序整体 n >= 0.例如,s = "BEIJING" ,s 代表这个串的串名,BEIJING 是串的值. ...

  6. C++ 笔记(35)— std::to_string 转换整形数字为字符串

    1. 函数原型 string to_string (int val); string to_string (long val); string to_string (long long val); s ...

  7. Linux shell 学习笔记(8)— 使用结构化命令(if-then 语句、数值比较、字符串比较、文件比较、case 语句)

    1. 使用 if-then 语句 最基本的结构化命令就是if-then语句.if-then语句有如下格式. if command then ​ commands fi 或者 if command; t ...

  8. Python 将字符串转为字典

    引言 在工作中遇到一个小问题,需要将一个 Python 的字符串转为字典,比如字符串: user_info = '{"name" : "john", " ...

  9. leetcode 5. Longest Palindromic Substring 字符串中的最长回文数 逐步从O(n^2)优化至线性时间

    题目 解析 思路一 暴力解法 思路二 指针+最大长度 思路3 由中间至两边找回数 思路4 Manacher's algorithm 线性时间 参考文档 题目 链接 给定一个字符串 s,找到 s 中最长 ...

最新文章

  1. SQL语句的增删改查
  2. pta7-3 统计不及格人数_编写程序,统计学生的成绩信息
  3. Python-GUI PyQT5编程:QTdesigner设计工具及UI转换py文件
  4. nginx php access denied,LNMP 解决Access Denied错误详细介绍
  5. [JavaWeb-JavaScript]JavaScript概念与功能
  6. 【渝粤题库】陕西师范大学163202 管理学原理 作业(高起本 专升本)
  7. 用示例说明BitMap索引的效率要优于B-Tree索引
  8. Aspose.Words for .NET
  9. 解决VScode安装Babel转码器报错:无法将“cnpm“项识别为cmdlet\函数、脚本文件或可运行程序的名称的问题
  10. CCF201409-3 字符串匹配(解法二)(100分)(废除!!!)
  11. css之div内部靠右
  12. [转载]shell 十三问?
  13. 181124每日一句
  14. C++编程 中文转换成Unicode
  15. 中学生信息技术计算机软件教案,初中信息技术教学计划
  16. next主题配置文件解读
  17. 密码编码学与网络安全——原理与实践(第八版)------第4章 学习笔记
  18. python实现阿里云盘同步功能(sync_folder)
  19. Arduino与Proteus仿真实例-SHT7x温度湿度传感器驱动仿真
  20. ROS小车-上位机代码:两驱小车直线行走校准

热门文章

  1. vs2015打开慢的解决方法
  2. SAP中方会计凭证打印解决方案
  3. springboot拦截异常信息发送邮件提醒
  4. VS2013模块对于SAFESEH映像是不安全的解决方法
  5. Spring事务总结(一) 内部调用事务失效、异常回滚
  6. 【报告分享】2021年中国新一代信息技术创投生态研究报告.pdf(附下载链接)...
  7. 【报告分享】阿里妈妈:熬夜真相-0点经济报告.pdf(附下载链接)
  8. leetcode力扣77. 组合
  9. 审题解题没思路?算法大赛出题方为你指点迷津!
  10. 机器学习算法总结之Boosting:AdaBoost