首页 > 其他分享 >2023.6.2 统计范围内的元音字符串数

2023.6.2 统计范围内的元音字符串数

时间:2023-06-03 13:11:14浏览次数:39  
标签:chars 字符串 prefix let 2023.6 words 元音 query Vec

image

可以用前缀和解。
首先建立一个前缀和数组prefix,令nwords的长度,那么prefix的长度就是n + 1。(将下标0空出来)
然后遍历words中的每一项,如果该项符合规则,则prefix[i] = prefix[i - 1] + 1,否则prefix[i] = prefix[i - 1。(意味着,这个位置有一个字符串可以提供1个贡献)

最后遍历queries中的每一项query,(我们前面将下标0空出来,因此整体下标右移了一位),令l = query[i][0] + 1, r = query[i][1] + 1
对于这个query,答案就是prefix[r] - prefix[l - 1]

use std::collections::{HashMap, HashSet};

impl Solution {
    pub fn vowel_strings(words: Vec<String>, queries: Vec<Vec<i32>>) -> Vec<i32>
    {
        fn check(word: &str) -> bool {
            let chars = word.as_bytes();
            [b'a', b'e', b'i', b'o', b'u'].contains(&chars[0]) &&
            [b'a', b'e', b'i', b'o', b'u'].contains(&chars[chars.len() - 1])
        }

        let n = words.len();
        let mut prefix = vec![0; n + 1];
        for i in 1..=n {
            prefix[i] = prefix[i - 1] + if check(&words[i - 1]) {1} else {0};
        }
        queries.into_iter().map(|query| prefix[query[1] as usize + 1] - prefix[query[0] as usize]).collect()
    }
}

标签:chars,字符串,prefix,let,2023.6,words,元音,query,Vec
From: https://www.cnblogs.com/st0rmKR/p/17453842.html

相关文章

  • ⌈力扣⌋删除字符串中的所有相邻重复项
    题目给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:"abbaca"输出:"ca"解释:例如,在"abbaca"中,我们可以删除"bb"由......
  • 2023.6.2linux系统文件查找
    03.Linux系统⽂件查找⽂件查找概述find名称查找find⼤⼩查找find时间查找find⽤户查找find类型查找find权限查找find处理动作Authorvx:WingspanGo⽂件查找概述Linux系统中的find命令在查找⽂件时⾮常有⽤⽽且⽅便。它可以根据不同的条件来进⾏查找⽂件:例如⽂件......
  • 2023.6.3——软件工程日报
    所花时间(包括上课):6h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.了解了一些数据库的知识;2.了解了一些python的知识;3.了解了一些英语知识;5.了解了一些Javaweb的知识;4.了解了一些数学建模的知识;6.了解了一些计算机网络的知识;......
  • Java 计算数学表达式(字符串解析求值工具)
    Java字符串转换成算术表达式计算并输出结果,通过这个工具可以直接对字符串形式的算术表达式进行运算,并且使用非常简单。这个工具中包含两个类Calculator和ArithHelperCalculator代码如下:importjava.util.Collections;importjava.util.Stack;/***算数表达式求值*......
  • 为什么说 Go 语言字符串是不可变的?
    原文链接:为什么说Go语言字符串是不可变的?最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说Go语言字符串是不可变的,这是为什么呢?这个问题本身并不困难,但对于新手来说确实容易产生困惑,今天就来回答一下。首先来看看它的底层结构:typestringStructst......
  • Leetcode 2559. 统计范围内的元音字符串数
    题目:给你一个下标从0开始的字符串数组words以及一个二维整数数组queries。每个查询queries[i]=[l,r]会要求我们统计在words中下标在l到r范围内(包含这两个值)并且以元音开头和结尾的字符串的数目。返回一个整数数组,其中数组的第i个元素对应第i个查询的答案......
  • C++字符串分割和C语言常用格式控制
    C++string的输出格式控制输出一个字符串:左对齐,字宽为10,空格填充1.strings;2.cin>>s;3.cout<<std::left<<setw(10)<<setfill('*')<<s<<endl;输入:love输出效果:love******C++string字符流字符分割技巧输入一行字符串,然后按某个字符分割成若干子串1.strings;......
  • 2023.6.2
    数据库的关系模式的设计 设有关系模式:教师授课(课程号,课程名,学分,教师号,教师名,职称,授课时数,授课学年),其语义为:一门课程(由课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名和职称,每门课程可以由多名教师讲授,每名教师也可以讲授多门课程,在同一学年每个教师对......
  • shell遍历当前目录下的文件,用去掉文件后缀的字符串替换文件中的文本
    今天写了一个shell,遍历当前目录下的文件,用每个文件的文件名去掉后缀的字符串替换文件中的一段字符串。 脚本如下:#!/bin/bashfile=`ls*.html`;echo$fileforitemin$filedofilename=${item%.*}echo$filenamesed-i"s/search('channel')/search('${fi......
  • Java 将字符串转换为Document对象
    可以使用JAXP(JavaAPIforXMLProcessing)提供的DocumentBuilder类将字符串数据转换成Document对象。具体步骤如下:1.创建一个DocumentBuilderFactory对象,用于创建DocumentBuilder对象。DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();2.创建一个D......