2022-05-04:比如,str = “ayxbx”,
有以下4种切法 : a | yxbx、ay | xbx、ayx | bx、ayxb | x,
其中第1、3、4种切法符合:x和y的个数,至少在左右两块中的一块里有相同的数量,
所以返回3。
给定一个字符串str,长度为N,
你有N-1种划分方法,把str切成左右两半,返回有几种切法满足:
x和y的个数,至少在左右两块中的一块里有相同的数量。
来自微软。

答案2022-05-04:

遍历统计x和y的个数。再次遍历做判断。
时间复杂度:O(N)。

代码用rust编写。代码如下:

fn main() {
let answer = split_same_number_ways("ayxbx");
println!("answer = {}", answer);
} fn split_same_number_ways(str: &str) -> isize {
if str.len() == 0 {
return 0;
}
let mut x_all: isize = 0;
let mut y_all: isize = 0;
for c in str.chars() {
x_all += if c == 'x' { 1 } else { 0 };
y_all += if c == 'y' { 1 } else { 0 };
}
let mut left_x: isize = if str.chars().nth(0).unwrap() == 'x' {
1
} else {
0
};
let mut left_y: isize = if str.chars().nth(0).unwrap() == 'y' {
1
} else {
0
};
let mut ans: isize = 0;
for i in 1..str.len() {
if left_x == left_y || (x_all - left_x) == (y_all - left_y) {
ans += 1;
}
left_x += if str.chars().nth(i as usize).unwrap() == 'x' {
1
} else {
0
};
left_y += if str.chars().nth(i as usize).unwrap() == 'y' {
1
} else {
0
};
}
return ans;
}

执行结果如下:


左神java代码

2022-05-04:比如,str = “ayxbx“, 有以下4种切法 : a | yxbx、ay | xbx、ayx | bx、ayxb | x, 其中第1、3、4种切法符合:x和y的个数,至少在的更多相关文章

  1. kFreeBSD 7.0于2013/05/04发布 桌面环境 GNOME 3....

    kFreeBSD 7.0于2013/05/04发布 桌面环境 GNOME 3.4, KDE 4.8.4, Xfce 4.8, and LXDE

  2. 2016.05.04,英语,《Vocabulary Builder》Unit 22

    acerb/acri: comes from the Latin adjective acer, meaning 'sharp' or 'sour'. acerbic: [ə'sɜːrbɪk] adj ...

  3. 2022.02.04 Day1

    前言 为日后的算法面试做准备,自己也很喜欢算法这个东西,每天3~5道题. 刷题 1.leetcode 209 长度最下的子数组 题目 长度最下的子数组 大致的意思是从数组中找到长度最小的数组,并且数组 ...

  4. 2021.05.04【NOIP提高B组】模拟 总结

    T1 题目大意, \(S_{i,j}=\sum_{k=i}^j a_k\) ,求 \(ans=\min\{ S_{i,j}\mod P|S_{i,j}\mod P\ge K \}\) 其中 \(i\l ...

  5. 2017/05/04 java 基础 随笔

    1.java变量在使用之前必须初始化 int  a; a=10 ; int b; 没有初始化,也没有使用也不报错 2.强制类型转换  int a=8: byte b=6; b=(byte)(a+b); ...

  6. EZ 2018 05 04 NOIP2018 模拟赛(十二)

    这次的试卷应该是激励我们一下的,链接 然后大家的分数就都很高,然后我就210被一群秒A T2的240大佬爆踩 掉了5rating但Rank竟然发杀了 X_o_r dalao && YZ ...

  7. C++课堂作业2016.05.04

    GitHub/object-oriented 作业题目 开课后的第一次作业,简单地写了一个类,用成员函数来实现计算圆的面积. [代码] main.cpp #include "Area.h&q ...

  8. 2015.05.04,外语,读书笔记-《Word Power Made Easy》 14 “如何谈论日常现象” SESSION 41

    1. people are the craziest animals bovine(['bәuvain] adj. (似)牛的, 迟钝的),像牛一样placid(['plæsid] adj. 安静的, ...

  9. Fitness - 05.04

    倒计时241天 运动38分钟,共计9组.拉伸10分钟. 每组跑步2分钟(6.3KM/h),走路2分钟(6KM/h). 上午下了课,直奔健身房. 手机坏了,没有听音乐. 没有吃午饭,但是上午喝的咖啡还是 ...

  10. dp - 求符合题意的序列的个数

    The sequence of integers a1,a2,…,ak is called a good array if a1=k−1 and a1>0. For example, the s ...

随机推荐

  1. Oracle-账户被锁:The account is locked

    Oracle-账户被锁:The account is locked cmd-->sqlplus--> 管理员登录:system@ORCL 密码:1 然后输入:alter user kjb( ...

  2. k8s集群角色管理

    查看集群各节点角色: [root@k8s-master-2 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master-1 Ready ...

  3. SpringBoot笔记--Failed to read candidate component class报错的解决

    问题解决 形成该错误的原因就是Spring依赖和我们所使用的JDK版本不匹配 更详细一点的话,要解决这个问题,我们就需要升高Spring版本或者降低JDK版本即可解决 否则不能够在网页里面找到Tomc ...

  4. 等价类计数:Burnside引理和Polya定理 阐述和相关例题

    本人不确保结果正确性. 类似的题集也很多,比如 https://ac.nowcoder.com/acm/contest/27275#question 我做了部分题目的题解 https://www.cn ...

  5. Salesforce LWC学习(十二) Dependence Picklist实现

    本篇可参看: Salesforce LWC学习(六) @salesforce & lightning/ui*Api Reference salesforce零基础学习(八十七)Apex 中Pi ...

  6. C++/Qt网络通讯模块设计与实现(五)

    在C++/Qt网络通讯模块设计与实现(四)中具体分析了Qt的信号槽.线程相关的知识,即从 Qt::ConnectionType,示例源码,结果论证,归纳总结等四个方面进行了全方面讲解,深刻阐述了代码设 ...

  7. 动手造轮子自己实现人工智能神经网络(ANN),解决鸢尾花分类问题Golang1.18实现

    人工智能神经网络( Artificial Neural Network,又称为ANN)是一种由人工神经元组成的网络结构,神经网络结构是所有机器学习的基本结构,换句话说,无论是深度学习还是强化学习都是基 ...

  8. 基于el-cascader级联选择器实现只有最后一级可以多选(已发布到npm & github)

    github地址:地址 背景: 我们经常级联合选择器多选的需求,但是element UI提供的级联选择器并不能只多选最后一级,所以我考虑基于element UI的级联选择器优化一下,实现可以多选最后一 ...

  9. QML中border、padding、margin

    1.border 定义 border代表边框,可以设置border的宽度和颜色等属性 实现image 实现code Rectangle { width: 200 height: 160 anchors ...

  10. ACM-位运算符-判断奇偶

    同样一个问题,位运算可以提高程序的运行效率. 下面讲一下关于奇偶性的判断. 常规方法 public static boolean isOdd(int i){ ​ return i % 2 != 0; ...