题目内容
小红拿到了一个字符串,她想知道这个字符串能否通过重新排列组成 Baidu 字符串?注:必须大小写完全相同。 共有 t 组询问。
输入描述
第一行输入一个正整数 t ,代表询问次数。
接下来的 t 行,每行输入一个仅包含英文字母的字符串。
所有字符串的长度之和保证不超过 200000
输出描述
对于每次询问,输出一行答案。如果可以通过重新排列组成 Baidu,则输出 Yes ,否则输出 No 。
思路
字符串长度必须为5,且必须包含Baidu5个char。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
char[] chars = "Baidu".toCharArray();
for (int i = 0; i < n; i++) {
String s = in.next();
if(s.length()!=5||!s.contains("B")||!s.contains("a")||!s.contains("i")||!s.contains("d")||!s.contains("u"))
System.out.println("No");
else System.out.println("Yes");
}
}
}
题目内容:
给定一个整数x,请你构造一个仅由’r’,‘e’,'d’三种字符组成的字符串,其中回文子串的数量恰好为x
输入描述
一个正整数x. 1≤x≤10^9
输出描述
回文子串的数量恰好为x的字符串
思路
d包含1个回文子串,dd包含3个回文子串,ddd包含6个,dddd包含10个,依次累加求。
比如x=14,那么14-10-3-1=0;依次构建10个r,3个e,1个d。
因为10>3>1,所以不会有其他多余的回文子串。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x = in.nextInt();
int temp=0,index=0,c=1;
StringBuilder builder = new StringBuilder("");
while(x>0){
temp=0;
for (int i = 1; i < 1000000; i++) {
temp+=i;
if(temp>x){
temp-=i;
index=i-1;
break;
}
}// 这段可以用(n+1)*n/2替换
if(c==1){
for (int i = 0; i < index; i++) {
builder.append("r");
}
c++;
}else if(c==2){
for (int i = 0; i < index; i++) {
builder.append("e");
}
c++;
}else {
for (int i = 0; i < index; i++) {
builder.append("d");
}
c=1;
}
x=x-temp;
}
System.out.println(builder.toString());
}
}
题目内容
小红拿到了一棵树,每个节点被染成了红色或者蓝色。
小红定义每条边的权值为:删除这条边时,形成的两个子树的同色连通块数量之差的绝对值。
小红想知道,所有边的权值之和是多少?
输入描述
第一行输入一个正整数 n ,代表节点的数量。
第二行输入一个长度为 n 且仅由 R 和 B 两种字符组成的字符串。
第 i 个字符为 R 代表 i 号节点被染成红色,为 B 则被染成蓝色。
接下来的 n−1 行,每行输入两个正整数 u 和 v ,代表节点 u 和节点 v 有一条边相连。
输出描述
一个正整数,代表所有节点的权值之和。
思路
关键在于构建无向图,取每个节点,记录其父节点的位置,之后从当前节点往下dfs,
sum=1+Σ儿子节点的同色联通块数量
同时需要考虑父子之间的数量
如果子节点的颜色和当前节点的颜色是否相同,子节点所在子树的数量需要-1,
比如R-R,右边R的同色连通块数量为1,但因为父子相同色,就是1+(1-0)
如果不同,儿子节点的同色联通块数量不需要-1。
比如B-R,右边R的同色连通块数量为1,但因为父子不同色,就是1+(1)
最后对所有边遍历一遍即可。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//4
//BBRR
//1 2
//3 2
//4 1
//答案为2
// 7
// RRBRRRB
// 1 2
// 1 3
// 1 4
// 3 5
// 3 6
// 4 7
// 答案为16
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int x = in.nextInt();
TreeNode[] treeNodes = new TreeNode[x];
char[] colors = in.next().toCharArray();
for (int i = 0; i < x; i++) {
treeNodes[i] = new TreeNode(colors[i]);
}
int[][] ints = new int[x - 1][2];
for (int i = 1; i < x; i++) {
int a = in.nextInt() - 1;
int b = in.nextInt() - 1;
ints[i - 1] = new int[]{a, b};
// 构建无向图,选取每个节点dfs
treeNodes[a].setFriend(treeNodes[b]);
treeNodes[b].setFriend(treeNodes[a]);
}
int sum = 0;
for (int i = 0; i < ints.length; i++) {
int num1 = dfs(treeNodes[ints[i][0]], treeNodes[ints[i][1]]);
int num2 = dfs(treeNodes[ints[i][1]], treeNodes[ints[i][0]]);
sum += num1 > num2 ? num1 - num2 : num2 - num1;
}
System.out.println(sum);
}
static int dfs(TreeNode node, TreeNode pre) {
int sum = 1;
for (TreeNode friend : node.friends) {
if (friend != pre) {
int dfs = dfs(friend, node);
if (friend.color != node.color)
sum += dfs;
else sum += dfs - 1;
}
}
return sum;
}
static class TreeNode {
char color;
List<TreeNode> friends;
public TreeNode(char color) {
this.color = color;
friends = new ArrayList<>();
}
void setFriend(TreeNode node) {
friends.add(node);
}
}
}
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg