I - Playing With Strings(回文串)

2023-11-07

I - Playing With Stringshttps://vjudge.csgrandeur.cn/problem/Gym-101020I

丹尼和迈克是两个孩子,他们整天玩游戏,当他们找不到游戏玩的时候,他们就发明一个游戏。有一个小时左右到达学校,因为他们爱玩串丹尼发明了一个游戏,谁是第一个形成回文字符串,用这个字符串的所有字母,根据以下示例规则:1-玩家可以重新排列字母组成一个字符串。2-所形成的字符串必须是回文,并且使用给定字符串的所有字母。3-如果有多个字符串,选择字典序最小的字符串。例如:字符串是“abacb”玩家可以形成:“abcba”和“bacab”,但“abcba”是字典序最小的。迈克让你写一个程序来计算回文字符串,这样他就可以打败丹尼了。

输入

您的程序将在一个或多个测试用例上进行测试。输入的第一行将是单个整数T,测试用例的数量(1≤T≤1000)。每一行的测试用例包含一个字符串,字符串的长度不超过1000个小写英文字母。

输出

对于每个测试用例,根据上面的规则打印一行包含字典序最小的回文字符串。如果没有这样的字符串打印"impossible"

思路

记录每个字母出现的次数,如果有两个及其以上种类的字母的数量是奇数,就不可能形成回文串,如果有一个是奇数,那么把其中一个放在中间(当然左右两边要对称),这样就可以形成回文串。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t,n;
    char a[1010];
    cin>>t;
    while(t--)
    {
        cin>>a;
        n=strlen(a);
        int b[150]={0};
        for(int i=0;i<n;i++)
        {
            b[a[i]]++;//记录每个字母出现的数量
        }
        int c=0,flag=0;
        for(int i='a';i<='z';i++)
        {
            if(b[i]%2!=0)
            {
                flag=i;//中间需要打印的字母
                c++;//出现奇数的个数
            }
        }
        if(c>1)
            cout<<"impossible"<<endl;
        else
        {
            for(int i='a';i<='z';i++)//打印左边
            {
                for(int j=0;j<b[i]/2;j++)
                {
                    printf("%c",i);
                }
                b[i]=b[i]/2;
            }
            if(c==1)//打印中间
                printf("%c",flag);
            for(int i='z';i>='a';i--)//打印右边
            {
                for(int j=0;j<b[i];j++)
                {
                    printf("%c",i);
                }
            }
            cout<<endl;
        }
    }
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    string s;
    scanf("%d",&t);
    while(t--)
    {
        int b[150]={0},flag,c=0;
        cin>>s;
        for(int i=0;i<s.size();i++)
        {
            b[s[i]]++;
        }
        for(int i='a';i<='z';i++)
        {
            if(b[i]%2)
            {
                c++;
                flag=i;
            }
        }
        if(c>1)
            printf("impossible\n");
        else
        {
            for(int i='a';i<='z';i++)
            {
                for(int j=0;j<b[i]/2;j++)
                {
                    printf("%c",i);
                }
            }
            if(c==1)
                printf("%c",flag);
            for(int i='z';i>='a';i--)
            {
                for(int j=0;j<b[i]/2;j++)
                {
                    printf("%c",i);
                }
            }
        printf("\n");
        }
    }
}
//2022/8/16

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

I - Playing With Strings(回文串) 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 为什么当实例化新的游戏对象时,它没有向它们添加标签? [复制]

    这个问题在这里已经有答案了 using System Collections using System Collections Generic using UnityEngine public class Test MonoBehaviou
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • “unable to find a medium containing a live file system“问题真正有效的解决方法。

    真正有效的关于ubuntu 16 04安装U盘安装出现 unable to find a medium containing a live file system 问题的解决方法 网上搜到的都是乱弹琴 一个靠谱的都没有 真正的解决方法 出现
  • maven的settings.xml,pom.xml配置

    1settings xml
  • 找不到d3dx9_43.dll丢失怎么解决(分享几种解决方法)

    为什么我们打开电脑软件或许游戏时候 电脑会报错出现d3dx9 43 dll丢失 或许找不到d3dx9 43 dll等等的提示 下面来详细介绍一下d3dx9 43 dll详细解决方法跟d3dx9 43 dll是什么 如果你的系统中没有安装或安
  • 【Python】 _tkinter.TclError: bitmap "xzw.ico" not defined

    问题描述 在Python中可以使用pyinstaller命令将 py文件打包成 exe文件 但是成功打包成 exe文件后 在Windows系统上运行却出现了如下错误 tkinter TclError bitmap xzw ico not d
  • ESP32-CAM网络摄像头系列-01-基于RTSP协议的局域网视频推流/拉流的简单实现

    前言 由于项目需要 最近开始开坑关于ESP32 CAM系列的RTSP网络摄像头系列 该文章为该系列的第一篇文章 用于记录项目开发过程 本文解决的问题 使用ESP32 CAM获取图像数据 并通过RTSP协议将获取到的视频流传输到上位机进行显示
  • mysql存储loop_mysql存储loop

    mysql数据库存储过程 存储过程简介 存储过程可以简单理解为一条或者多条sql语句的集合 存储过程用来实现将一组关于表的操作的sql语句当作一个整体来执行 存储过程在实际应用中最主要的特点的事提高执行效率以及sql代码封装功能 特别是sq
  • 今天我要写Code吗?

    Manager还能不能写Code 如果你刚从技术开发职位升迁到管理职位 这会是一个在相当长一段时间内非常纠结你的问题 如果你之前技术做得还不错 算是个 高手 你应该会更加纠结一点 也许每天都在挣扎着 今天我要写Code吗 在深入探讨这个问题
  • 基础设计三——FPGA学习笔记<4>

    前置学习 基础设计二 FPGA学习笔记 3 基础设计一 FPGA学习笔记 2 verilog语法 FPGA学习笔记 1 参考书目 野火FPGA Verilog 开发实战指南 目录 一 串口 RS232 lt 1 gt 简介 lt 2 gt
  • Qt5.3.1编译QOCI链接oracle

    一 Qt 我下载的是mingw版本的 qt opensource windows x86 mingw482 opengl 5 3 1 exe 安装 安装的时候记得把source选上 建议全选 电脑不差3点多G的空间吧 安装好后 我们设置一下
  • IDC存储软件定义的七个主要类别

    在DoStor上看到一篇文章 提到IDC存储软件定义的七个主要类别 1 数据备份与恢复 2 归档软件 3 复制软件 4 存储管理软件 5 存储设备管理软件 6 存储基础架构软件 7 文件系统软件 对号入坐 我在学习和工作中涉及了其中的1 2
  • Git密码(登录凭证)的保存和重置 Mac

    Git密码 登录凭证 的保存和重置 Mac 1 凭证系统 2 命令行操作 store模式 2 1 凭证存储 2 2 凭证删除 3 命令行操作 osxkeychain模式 Mac用户 3 1 辅助工具安装 3 2 凭证存储 3 3 凭证删除
  • osg报错:错误(活动) E0757 变量 “GLenum“ 不是类型名

    前言 osg报错 错误 活动 E0757 变量 GLenum 不是类型名 原因 osg中封装了openGL的库 感觉vs2019无法识别openGL相关的部分 解决 vs2019中配置 预处理器
  • DELL R服务器配置IPMI

    转载自https blog csdn net hanzheng260561728 article details 107661274 使用iDRAC设置实用程序 在启动过程中按F2 设置iDRAC IP 打开受管理的系统 在开机自检 POS
  • 如何将node.js部署到服务器上

    注 本文只是简易的单个node js文件 名为server js 运行 是为了给前端项目写一个数据接口 环境 阿里云服务器 ubuntu 64bit xshell 1 首先登录阿里云添加安全组规则 开放程序运行时访问的端口号 本文为8000
  • 使用 selenium 连接已经打开的 chrome 浏览器

    1 方法一 新建文件夹test 进入chrome exe 目录 打开CMD 输入 chrome exe remote debugging port 9999 user data dir D test 弹出 浏览器框 pycharm运行脚本如
  • springmvc代码正确但是报错404解决以及乱码解决

    1 如果代码正确 但是运行报错404的话 可能是jar包没有导入到maven上 可以到Project Structure 中的Artifacts中 找到对应的项目 创建一个lib文件夹 添加jar包到里面 如果没有导入jar包的话 可以在W
  • Linux nohup后台命令基础详解

    一 前言 因为经常使用Xshell进行服务器代码的运行 但是每次到关机后 或者是关掉Xshell连接窗口 在服务器上的命令 操作也就断掉了 这不得不找到了一个Linux命令 nohup 二 基本用法 nohup command arg 拿p
  • PHP实现发送邮件

    不同类型的邮箱发送邮件的方式也是不同的 下面我们就先给大家举例介绍qq邮箱开启发送邮件服务的方法 首先我们登录qq邮箱 打开设置 选择帐户 然后在帐户下 找到如下所示的开启服务部分 开启服务中 前两个选项均可实现邮件发送服务 点击开启 会出
  • 2个map集合求差集

    List
  • I - Playing With Strings(回文串)

    I Playing With Stringshttps vjudge csgrandeur cn problem Gym 101020I 丹尼和迈克是两个孩子 他们整天玩游戏 当他们找不到游戏玩的时候 他们就发明一个游戏 有一个小时左右到达