首页 > 其他分享 >反向思维

反向思维

时间:2023-08-21 17:46:59浏览次数:27  
标签:思维 end target int start 反向 string first

题目:

给你两个字符串 start 和 target ,长度均为 n 。每个字符串 仅 由字符 'L'、'R' 和 '_' 组成,其中:

字符 'L' 和 'R' 表示片段,其中片段 'L' 只有在其左侧直接存在一个 空位 时才能向 左 移动,而片段 'R' 只有在其右侧直接存在一个 空位 时才能向 右 移动。
字符 '_' 表示可以被 任意 'L' 或 'R' 片段占据的空位。
如果在移动字符串 start 中的片段任意次之后可以得到字符串 target ,返回 true ;否则,返回 false 。

返回true的情况太多,所以我们讨论三种返回false的情况。

  1. 去除_后的字符串不一样
  2. start中的L比target的靠左
  3. strat中的L比target中的靠右

由此可以得到代码:

class Solution {
public:
    bool canChange(string start, string target) {
        string s=start;
        string t=target;
        s.erase(remove(s.begin(),s.end(),'_'),s.end());
        t.erase(remove(t.begin(),t.end(),'_'),t.end());
        if(s!=t)return false;
        int ls=0;int rs=0;
        int lt=0;int rt=0;
        for(int i=0;i<start.size();++i){
            switch(start[i]){
                case 'L':++ls;break;
                case 'R':++rs;
            }
            switch(target[i]){
                case 'L':++lt;break;
                case 'R':++rt;
            }
            if(ls>lt)return false;
            if(rs<rt)return false;
        }
        return true;
    }
};

附属知识点:

  1. image
  2. remove函数源代码:
template <class ForwardIterator, class T>
ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val)
{
    ForwardIterator result = first;
    while (first!=last) 
    {
        if (!(*first == val)) 
        {
            *result = move(*first);
            ++result;
        }
        ++first;
    }
    return result;
}
  1. erase三种用法:
    image

  2. string中永久删除某段文字常用函数:s.erase(s.remove(s,begin(),s.end(),'目标'),s.end());

标签:思维,end,target,int,start,反向,string,first
From: https://www.cnblogs.com/adamaik/p/17646652.html

相关文章

  • 微软韦青:滑向冰球将要到达的位置 | 科创人数智思维私董会第9期回顾
    2023年8月5日,由科创人、北航投资联手创办的科创人·数智思维私董会第9期圆满举行。微软(中国)首席技术官韦青担任本次活动引导嘉宾,近20位来自传统企业、科创企业、投资机构的CEO、技术决策者及领域专家,围绕新人-机时代,思维认知的转变与提升等主题展开热烈讨论。▲部分与会嘉宾:(由......
  • 数据治理专业认证CDMP学习笔记(思维导数据治理专业认证CDMP学习笔记(思维导图与知识点)-
    大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人。在最近的两年的时间里,因为公司的需求,还有大数据的发展趋势所在,我开始学习数据治理的相关知识。数据治理需要进行系统的学习才能真正掌握,也需要进行专业的考试认证才能证明自己在数据治理......
  • 多级反向代理[Squid]下获取客户端真实IP地址
    在很多应用下都可能有需要将用户的真实IP记录下来,这时就要获得用户的真实IP地址,在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。这段时间在做IP统计的......
  • 使用QGIS切片,使用Nginx反向代理本地瓦片,并在QGIS加载图层
    使用QGIS切片(以tif为例)新建QGIS工程(.qgz)将tif文件拖到图层区打开工具箱-->栅格工具-->生成XYZ瓦片(目录)设置参数:坐标范围、层级、瓦片格式、输出目录等,点击运行输出目录不选则默认会生成到C盘的临时目录运行完毕后记录出现这段文字,关闭对话框,点击右下角路径可以预览使用......
  • 解密Nginx与Elasticsearch的协同高效:深入理解反向代理与全文搜索
    在当今高度互联的网络环境中,后端技术的结合与优化对于构建高性能应用至关重要。本篇博客将聚焦于两个关键主题:Nginx反向代理和Elasticsearch全文搜索,通过深入分析实现原理和代码示例,展示它们如何协同工作以提升系统性能。Nginx反向代理的作用Nginx不仅仅是一款高性能的Web服务器,还......
  • python机器学习经典算法代码示例及思维导图(数学建模必备)
    最近几天学习了机器学习经典算法,通过此次学习入门了机器学习,并将经典算法的代码实现并记录下来,方便后续查找与使用。这次记录主要分为两部分:第一部分是机器学习思维导图,以框架的形式描述机器学习开发流程,并附有相关的具体python库,做索引使用;第二部分是相关算法的代码实现(其实就是......
  • Squid代理服务之反向代理模式
    为公网用户做加速访问1)实验拓扑2)web服务器配置参考传统模式中的web服务器配置,这里不再重复记录操作。网关需要指向squid服务器的内网ipecho"GATEWAY=10.10.10.13">>/etc/sysconfig/network-scripts/ifcfg-ens333)安装squid服务安装步骤这里不再赘述,参考传统模式中的安装步骤。(1)开......
  • 深入探究 Nginx 负载均衡与反向代理
    在现代Web应用中,处理高并发和确保可用性是至关重要的。Nginx是一个强大的开源服务器,可以作为负载均衡器和反向代理来提供性能优化和高可用性。本文将深入探讨Nginx的负载均衡和反向代理原理,以及如何在后端架构中应用它。负载均衡的原理负载均衡是将传入的请求分发到多个服务器......
  • 8月17日思维训练
    8月17日思维训练CF1545BAquaMoonandChess题目大意:给定一个长度为n的棋盘的状态,位置\(i\)为\(1\)代表该位置有棋子,为\(0\)则说明没有棋子。如果位置\(i+2\)是空的,位置\(i+1\)非空,则位置\(i\)的棋子可以移动到位置\(i+2\),反之,同理。问通过上述操作可以达到的状......
  • AtCoder Beginner Contest 311 - D(思维题)
    目录D-GridIceFloorABC简单题D思维题D-GridIceFloor题意给定一个\(n\timesm\)的矩阵,矩阵每个位置上的字符要么是'.'要么是'#',保证矩阵的最外围一圈都是'#'。玩家初始位于位置(2,2)。玩家可以进行移动,但是移动有条件:玩家首先选定一个移动方向,之后在这个方......