首页 > 其他分享 >1177. 构建回文串检测

1177. 构建回文串检测

时间:2023-06-15 16:56:39浏览次数:44  
标签:1177 子串 right int 检测 prefix 构建 left 回文

给你一个字符串 s,请你对 s 的子串进行检测。

每次检测,待检子串都可以表示为 queries[i] = [left, right, k]。我们可以 重新排列 子串 s[left], ..., s[right],并从中选择 最多 k 项替换成任何小写英文字母。

如果在上述检测过程中,子串可以变成回文形式的字符串,那么检测结果为 true,否则结果为 false。

返回答案数组 answer[],其中 answer[i] 是第 i 个待检子串 queries[i] 的检测结果。

注意:在替换时,子串中的每个字母都必须作为 独立的 项进行计数,也就是说,如果 s[left..right] = "aaa" 且 k = 2,我们只能替换其中的两个字母。(另外,任何检测都不会修改原始字符串 s,可以认为每次检测都是独立的)

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/can-make-palindrome-from-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

import java.util.ArrayList;
import java.util.List;

class Solution {
    public List<Boolean> canMakePaliQueries(String s, int[][] queries) {
        int[] prefix = new int[s.length() + 1];
        for (int i = 0; i < s.length(); i++) {
            prefix[i + 1] = prefix[i];
            int index = s.charAt(i) - 'a';
            prefix[i + 1] ^= (1 << (s.charAt(i) - 'a'));
        }
        List<Boolean> ans = new ArrayList<>();
        for (int[] query : queries) {
            int left = query[0];
            int right = query[1];
            int k = query[2];
            int x = prefix[right + 1] ^ prefix[left];
            int sum = Integer.bitCount(x);
            sum -= (right - left + 1) % 2;
            ans.add(sum / 2 <= k);
        }
        return ans;
    }
}

标签:1177,子串,right,int,检测,prefix,构建,left,回文
From: https://www.cnblogs.com/tianyiya/p/17483363.html

相关文章

  • 零代码量化投资:用ChatGPT构建一个投资交易策略并进行回测
    准备后数据后,就可以开发构建量化投资策略了。比较知名、流行的量化策略回测框架有vnpy、pyalgotrader、backtrader等。下面以backtrader为例,来运行一个最简单的投资策略。先安装backtrader的库:pipinstallbacktrader然后在ChatGPT中输入提示词:写一段Python代码,用Backtrader库构建......
  • Python用字典构建多级菜单
    Python用字典构建多级菜单#key-value#字典是无序的,因为他没有下标,通过key找info={'stu01':"liuhaolai",'stu02':"wangshulin"}print(info['stu01'])info['stu03']='刘**'#若不存在该key,则直接添加info['stu04&#......
  • docker-compose构建kratos微服务项目运行失败,提示:runtime/cgo: pthread_create failed
    这个问题网上解决方案较少,我们这边问题定位是docker-compose.yaml配置问题在配置文件中新增配置如下:privileged:true设置容器的权限为root 最后解决......
  • 每日一道leetcode:9. 回文数
    1.题目(简单)题目链接给你一个整数x,如果x是一个回文整数,返回true;否则,返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。示例1:输入:x=121输出:true示例2:输入:x=-121输出:false解释:从左向右读,为-121。从右向左读,为121......
  • 算法题总结-最长回文序列
    原题https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1?tpId=37&tqId=21255&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&am......
  • #yyds干货盘点# LeetCode程序员面试金典:分割回文串
    题目:给你一个字符串s,请你将s分割成一些子串,使每个子串都是回文串。返回s所有可能的分割方案。回文串是正着读和反着读都一样的字符串。 示例1:输入:s="aab"输出:[["a","a","b"],["aa","b"]]示例2:输入:s="a"输出:[["a"]]代码实现:classSolution{bo......
  • 每日一道leetcode:5. 最长回文子串
    1.题目(中等)题目链接给你一个字符串s,找到s中最长的回文子串。如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。示例1:输入:s=“babad”输出:“bab”解释:“aba”同样是符合题意的答案。示例2:输入:s=“cbbd”输出:“bb”提示:1<=s.length<=1000s仅由数字和英文......
  • 构建简单CMake及vscode调试
    main.cpp#include<iostream>intmain(){intnum_a,num_b;num_a=10;num_b=20;std::cout<<"num_a="<<num_a<<std::endl;std::cout<<"num_b="<<num_b<<std......
  • 当SRS遇到K8s:如何构建海量推流源站?
    Photoby OscarIvanEsquivelArteaga on Unsplash文/杨成立本章描述了基于K8s,如何构建OriginCluster支持超多推流场景。OriginCluster通过配置其他源站的信息,在本源站没有流时查询到流的位置,通过RTMP302定向到指定源站,具体原理可以参考#464。主要应用场景如下:源站灾备:即使......
  • 构建之法阅读笔记二
    在《构建之法》一书中,作者鲍勃·马丁强调了软件开发实践中的重要性和挑战,并提供了一些实用的技术和方法来解决这些问题。其中,他特别强调了代码质量、可维护性和测试的重要性。在书中,作者介绍了许多面向对象设计原则,如单一职责原则、依赖倒置原则和接口隔离原则等,并详细阐述了它们......