2022-05-04:比如,str = “ayxbx“, 有以下4种切法 : a | yxbxay | xbxayx | bxayxb | x, 其中第134种切法符合:x和y的个数,至少在

Posted 福大大架构师每日一题

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022-05-04:比如,str = “ayxbx“, 有以下4种切法 : a | yxbxay | xbxayx | bxayxb | x, 其中第134种切法符合:x和y的个数,至少在相关的知识,希望对你有一定的参考价值。

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代码

创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖

以上是关于2022-05-04:比如,str = “ayxbx“, 有以下4种切法 : a | yxbxay | xbxayx | bxayxb | x, 其中第134种切法符合:x和y的个数,至少在的主要内容,如果未能解决你的问题,请参考以下文章

请问QT怎么转换成LPCTSTR 可以使用的字母, 比如QString str1="text"; 接下来怎么做

2021-08-04:给定一个字符串str,当然可以生成很多子序列。返回有多少个子序列是回文子序列,空序列不算回文。比如,str = “aba”,回文子序列:{a}{a} {a,a} {b}{(代码片

字符串反转的面试题,你会吗?

vba 如何把字符串转化为逻辑表达式?

PHP怎样过滤中文状态下特殊字符(比如标点符号)?

Python: 字符串开头或结尾匹配str.startswith(),str.endswith()