字符串重新排列

字符串重新排列

真题目录: 点击去查看

E 卷 100分题型

题目描述

给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出:

  1. 单词内部调整:对每个单词字母重新按字典序排序
  2. 单词间顺序调整:
    1. 统计每个单词出现的次数,并按次数降序排列
    2. 次数相同,按单词长度升序排列
    3. 次数和单词长度均相同,按字典升序排列

请输出处理后的字符串,每个单词以一个空格分隔。

输入描述

一行字符串,每个字符取值范围:[a-zA-z0-9]以及空格,字符串长度范围:[1,1000]

输出描述

输出处理后的字符串,每个单词以一个空格分隔。

用例1

输入

This is an apple

输出

an is This aelpp

说明

用例2

输入

My sister is in the house not in the yard

输出

in in eht eht My is not adry ehosu eirsst

说明

题解

c++

#include<iostream>
#include <cstdio>
#include<vector>
#include<string>
#include <utility> 
#include <sstream>
#include<algorithm>
#include<map>
using namespace std;// 通用 split 函数
vector<string> split(const string& str, const string& delimiter) {vector<string> result;size_t start = 0;size_t end = str.find(delimiter);while (end != string::npos) {result.push_back(str.substr(start, end - start));start = end + delimiter.length();end = str.find(delimiter, start);}// 添加最后一个部分result.push_back(str.substr(start));return result;
}
// 统计单词出现数量
map<string, int> countMp;
// 单词内部转换策略
map<string, string> mp;// 自定义排序
bool cmp(string s1, string s2) {if (countMp[mp[s1]] == countMp[mp[s2]]) {if (s1.size() == s2.size()) {return mp[s1] < mp[s2];}return s1.size() < s2.size();}return countMp[mp[s1]] > countMp[mp[s2]];
}int main() {string s;getline(cin, s);vector<string> ans = split(s, " ");// 进行转换for (int i = 0; i < ans.size(); i++) {string first = ans[i];string firstBack = string(first);sort(firstBack.begin(), firstBack.end());mp[ans[i]] = firstBack;countMp[firstBack] ++;}sort(ans.begin(), ans.end(), cmp);for (int i = 0; i < ans.size(); i++) {cout << mp[ans[i]] << " ";}}

JAVA

import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;
import java.util.StringJoiner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String[] arr = sc.nextLine().split(" ");System.out.println(getResult(arr));}public static String getResult(String[] arr) {arr = Arrays.stream(arr).map(str -> {char[] cArr = str.toCharArray();Arrays.sort(cArr);return new String(cArr);}).toArray(String[]::new);HashMap<String, Integer> count = new HashMap<>();for (String s : arr) {count.put(s, count.getOrDefault(s, 0) + 1);}Arrays.sort(arr,(a, b) ->!count.get(a).equals(count.get(b))? count.get(b) - count.get(a): a.length() != b.length() ? a.length() - b.length() : a.compareTo(b));StringJoiner sj = new StringJoiner(" ", "", "");for (String s : arr) {sj.add(s);}return sj.toString();}
}

Python

# 输入获取
arr = input().split()# 算法入口
def getResult(arr):for i in range(len(arr)):arr[i] = "".join(sorted(arr[i]))count = {}for c in arr:if count.get(c) is None:count[c] = 0count[c] += 1# arr.sort(key=lambda x: (-count[x], len(x), [ord(char) for char in x]))arr.sort(key=lambda x: (-count[x], len(x), x))# return " ".join(map(str, arr))return " ".join(arr)# 算法调用
print(getResult(arr))

JavaScript

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {const arr = line.split(" ");console.log(getResult(arr));
});function getResult(arr) {arr = arr.map((str) => [...str].sort().join(""));const count = arr.reduce((p, c) => {p[c] ? p[c]++ : (p[c] = 1);return p;}, {});arr.sort((a, b) =>count[a] !== count[b]? count[b] - count[a]: a.length !== b.length? a.length - b.length: a > b? 1: -1);return arr.join(" ");
}

Go

package mainimport ("bufio""fmt""os""sort""strings"
)// 定义全局变量
var countMap = make(map[string]int) // 统计单词出现数量
var transformMap = make(map[string]string) // 单词内部转换策略// 自定义排序
func customSort(words []string) func(i, j int) bool {return func(i, j int) bool {transI, transJ := transformMap[words[i]], transformMap[words[j]]if countMap[transI] == countMap[transJ] {if len(words[i]) == len(words[j]) {return transI < transJ}return len(words[i]) < len(words[j])}return countMap[transI] > countMap[transJ]}
}func main() {// 读取输入scanner := bufio.NewScanner(os.Stdin)scanner.Scan()input := scanner.Text()// 分割字符串words := strings.Split(input, " ")// 构建转换映射和统计计数for _, word := range words {transformed := strings.Split(word, "")sort.Strings(transformed)transformedWord := strings.Join(transformed, "")transformMap[word] = transformedWordcountMap[transformedWord]++}// 排序sort.Slice(words, customSort(words))// 输出结果for _, word := range words {fmt.Printf("%s ", transformMap[word])}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/68971.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单调栈详解

文章目录 单调栈详解一、引言二、单调栈的基本原理1、单调栈的定义2、单调栈的维护 三、单调栈的应用场景四、使用示例1、求解下一个更大元素2、计算柱状图中的最大矩形面积 五、总结 单调栈详解 一、引言 单调栈是一种特殊的栈结构&#xff0c;它在栈的基础上增加了单调性约束…

差分轮算法-两个轮子计算速度的方法-阿克曼四轮小车计算方法

四轮驱小车的话&#xff1a; 转向角度计算方法&#xff1a;float turning_angle z_angular / x_linear; // 转向角度&#xff0c;单位为弧度 速度的话直接用线速度 两轮驱动小车&#xff1a; 计算公式&#xff1a; leftSpeed x_linear - z_angular * ORIGINBOT_WHEEL_TRACK /…

分布式光纤应变监测是一种高精度、分布式的监测技术

一、土木工程领域 桥梁结构健康监测 主跨应变监测&#xff1a;在大跨度桥梁的主跨部分&#xff0c;如悬索桥的主缆、斜拉桥的斜拉索和主梁&#xff0c;分布式光纤应变传感器可以沿着这些关键结构部件进行铺设。通过实时监测应变情况&#xff0c;能够精确捕捉到车辆荷载、风荷…

《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; 《安富莱嵌入式周报》第349期&#xff1a;VSCode正式支持Matlab调试&#xff0c;DIY录音室级麦克风…

Spring Boot 3.4 正式发布,结构化日志!

1 从 Spring Boot 3.3 升级到 3.4 1.1 RestClient 和 RestTemplate 新增对 RestClient 和 RestTemplate 自动配置的支持&#xff0c;可用 Reactor Netty 的 HttpClient 或 JDK 的 HttpClient。支持的客户端优先级&#xff1a; Apache HTTP Components (HttpComponentsClient…

租车骑绿岛

租车骑绿岛 真题目录: 点击去查看 E 卷 100分题型 题目描述 部门组织绿岛骑行团建活动。租用公共双人自行车&#xff0c;每辆自行车最多坐两人&#xff0c;最大载重M。给出部门每个人的体重&#xff0c;请问最多需要租用多少双人自行车。 输入描述 第一行两个数字m、n&…

Pyside6(PyQT5)中的QTableView与QSqlQueryModel、QSqlTableModel的联合使用

QTableView 是QT的一个强大的表视图部件&#xff0c;可以与模型结合使用以显示和编辑数据。QSqlQueryModel、QSqlTableModel 都是用于与 SQL 数据库交互的模型,将二者与QTableView结合使用可以轻松地展示和编辑数据库的数据。 QSqlQueryModel的简单应用 import sys from PySid…

uniapp+Vue3(<script setup lang=“ts“>)模拟12306城市左右切换动画效果

效果图&#xff1a; 代码&#xff1a; <template><view class"container"><view class"left" :class"{ sliding: isSliding }" animationend"resetSliding">{{ placeA }}</view><view class"center…

OFD、PDF 电子签章系统处理流程

在C#中实现电子签章系统的处理流程&#xff0c;可以参考以下步骤和技术实现&#xff1a; 1. 电子签章系统的基本流程 电子签章系统的核心流程包括以下几个步骤&#xff1a; 密钥生成&#xff1a;生成公钥和私钥对&#xff0c;私钥由签章人保管&#xff0c;公钥用于验证签名。…

VUE elTree 无子级 隐藏展开图标

这4个并没有下级节点&#xff0c;即它并不是叶子节点&#xff0c;就不需求展示前面的三角展开图标! 查阅官方文档如下描述&#xff0c;支持bool和函数回调处理&#xff0c;这里咱们选择更灵活的函数回调实现。 给el-tree结构配置一下props&#xff0c;注意&#xff01; :pr…

Ansys Motor-CAD:IPM 电机实验室 - 扭矩速度曲线

各位电动机迷们&#xff0c;大家好&#xff1a; 在本博客中&#xff0c;我讨论了如何使用 Ansys Motor-CAD 通过 LAB 模块获取扭矩速度曲线。使用每安培最大扭矩电机控制策略&#xff0c;并涵盖恒定扭矩区域和恒定功率、磁通减弱区域。分析了高转子速度如何影响功率输出。 模型…

网络(三) 协议

目录 1. IP协议; 2. 以太网协议; 3. DNS协议, ICMP协议, NAT技术. 1. IP协议: 1.1 介绍: 网际互连协议, 网络层是进行数据真正传输的一层, 进行数据从一个主机传输到另一个主机. 网络层可以将数据主机进行传送, 那么传输层保证数据可靠性, 一起就是TCP/IP协议. 路径选择: 确…

docker ubuntu:20.04构建c++ grpc环境

由c grpc必须源码编译&#xff0c;ubuntu版本不同可能出现的问题也不同&#xff0c;这里分享下我的构建过程。 我是vscode结合docker去安装c虚拟环境&#xff0c;我不想污染本机环境。 vscode的插件Dev Containers Dockerfile如下(如果单纯是ubuntu环境构建&#xff0c;可忽略该…

数据结构:二叉树—面试题(一)

目录 1、相同的树 2、另一棵树的子树 3、翻转二叉树 4、平衡二叉树 5、对称二叉树 6、二叉树遍历 7、二叉树的分层遍历 1、相同的树 习题链接https://leetcode.cn/problems/same-tree/description/https://leetcode.cn/problems/same-tree/description/ 描述&#xff1a…

MySQL训练营-慢查询诊断问题

慢查询相关参数和建议配置 slow_query_log long_query_time 日志开关&#xff0c;是否记慢查询日志以及超过多长时间判定为慢查询。 查看参数设置&#xff1a; SHOW VARIABLES LIKE ‘slow_query_log’;SHOW VARIABLES LIKE ‘long_query_time’; 实践建议&#xff1a; …

thinkphp8在使用apidoc时, 4层的接口会有问题 解决办法

thinkphp8 4层的接口会有问题, 比如这样的接口 /adminapi/notice/announcements/lists, 应该换成 /adminapi/notice.announcements/lists 这样才行, 有没有人处理过? 实际上在官网的帮助里有描述 自动生成的url不对&#xff1f; | Apidoc // config/apidoc.php //... auto_url…

python+playwright自动化测试(四):元素操作(键盘鼠标事件)、文件上传

目录 鼠标事件 悬停 移动 按键 点击 滚轮操作 拖拽 键盘事件 输入文本内容 type输入内容 fill输入内容 按键操作press 文件上传 下拉选/单选框/复选框 滚动条操作 鼠标事件 悬停 page.get_by_text(设置,exactTrue).nth(1).hover() 移动 page.mouse.move(x33…

SQL Server所有数据类型大全

数据类型列表 整数类型&#xff1a;bigint、int、smallint、tinyint精确数值类型&#xff1a;decimal、numeric近似数值类型&#xff1a;float、real字符类型&#xff1a;char、varchar、text、nchar、nvarchar、ntext日期和时间类型&#xff1a;date、time、datetime2、dateti…

SQL-leetcode—1164. 指定日期的产品价格

1164. 指定日期的产品价格 产品数据表: Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | new_price | int | | change_date | date | ---------------------- (product_id, change_date) 是此表的主键&#xff08;具…

用edge浏览器追剧音量太小?安装音量增强器可解忧

0 源起 春节佳节将至&#xff0c;可以利用这个难得的假期追一追想看而没空看的剧了。 但是在用Edge浏览器播放网页中的视频时&#xff0c;有时音量太小&#xff0c;根本没法听清楚&#xff0c; 遇到这种情况时&#xff0c;尽管Edge浏览器本身没有提供音量控制功能&#xff0…