首页 > 其他分享 >LeetCode 1790.仅执行一次字符串交换能否使两个字符串相等

LeetCode 1790.仅执行一次字符串交换能否使两个字符串相等

时间:2023-06-07 14:03:30浏览次数:47  
标签:String int s1 1790 flag2 flag1 字符串 LeetCode


LeetCode 1790.仅执行一次字符串交换能否使两个字符串相等

思路

暴力模拟,根据题目思路直接写代码即可,依次遍历字符串的每一位,如果相等则继续,如果不相同则分别储存在记录量flag1,flag2中,如果不同的位置超过两个或者只有一个则返回false,如果不存在不同位置或者不同的位置相同就返回true

代码

class Solution {
    public boolean areAlmostEqual(String s1, String s2) {
        int n=s1.length(), flag1=-1, flag2=-1;
        for(int i=0;i<n;i++)
        {
            if(s1.charAt(i)==s2.charAt(i))  continue;
            if(flag1==-1)   flag1=i;
            else if(flag2==-1)  flag2=i;
            else    return false;
        }
        if(flag1==-1)   return true;
        if(flag2==-1)   return false;
        return s1.charAt(flag1)==s2.charAt(flag2) && s1.charAt(flag2)==s2.charAt(flag1);
    }
}


标签:String,int,s1,1790,flag2,flag1,字符串,LeetCode
From: https://blog.51cto.com/u_15567308/6431269

相关文章

  • 【每日一题】LeetCode 913.猫和老鼠(hard题)
    题目两位玩家分别扮演猫和老鼠,在一张无向图上进行游戏,两人轮流行动。图的形式是:graph[a]是一个列表,由满足ab是图中的一条边的所有节点b组成。老鼠从节点1开始,第一个出发;猫从节点2开始,第二个出发。在节点0处有一个洞。在每个玩家的行动中,他们必须沿着图中与所在当前......
  • LeetCode 481.神奇字符串
    LeetCode481.神奇字符串本题目应该说难在读题,根据题目描述的意思,s作为一个神奇字符串,他的每一组数都是根据前面的数去判定的,以开头的122之后为例,122之的末尾为2,而s的规则是1和2交替出现,所以后面应当跟着"1",而这一组"1"的数量则由其前面的"2"来决定,所以这一组有两个"1",同理,在这后面......
  • LeetCode 9.回文数
    LeetCode9.回文数思路分两种情况。如果值为负数,则当前数肯定不是回文数如果值为正数,则将其数值反转后与原数值比较,如果相同则是回文数代码classSolution{publicbooleanisPalindrome(intx){if(x<0)returnfalse;inttmp=0,num=x;while(num......
  • LeetCode 915.分割数组
    LeetCode915.分割数组思路模拟题,两遍遍历,因为要保证左侧区间尽可能小,所以就要找到最左面的适合的点,所以第一遍先从最右边开始记录前缀最小的数,之后再从左往右遍历一遍记录当前最大的前缀,同时将当前最大前缀与下一位的最小前缀比较,如果小于下一位的最小前缀则直接输出即可代码class......
  • LeetCode 934.最短的桥
    LeetCode934.最短的桥题目限制了岛的数量肯定为2,所以我们只需要找到两个岛即可,首先通过遍历每一个坐标找到一个岛的点(值为1),接着以这个点开始DFS,找到该岛上所有的点,并将值设为-1,然后以这些点为基础集合,再进行BFS,当找到第一个值为1的点时,BFS的层数就是需要翻转的数目classSolution......
  • LeetCode 907.子数组的最小值之和
    LeetCode907.子数组的最小值之和本题由于每一项都需要遍历到,所以我们要计算所有可能的排列组合情况,所以这道题我们应该从每个元素分别出发,构建单调栈,找到每个元素左边和右边第一个比他小的元素,在这个区间范围内,我们可以断定任何一个子区间得到的最小值都是当前选定这个元素,所以最......
  • 【LeetCode】11月每日一题刷题记录
    575.分糖果classSolution{public:intdistributeCandies(vector<int>&candyType){unordered_set<int>S;for(autoc:candyType)S.insert(c);returnmin(candyType.size()/2,S.size());}};237.删除链表中的节点由于是单链表......
  • LeetCode 862.和至少为k的最短子数组
    LeetCode862.和至少为k的最短子数组本题前缀和队列并不单调,所以应该算变种单调队列,在计算出单调队列以后还要进行进一步优化,即在如下条件如果我们找到当前的s[i]满足条件,则说明之后选取的s[i]不管是多少,均没有当前s[i]距离s[j]近,所以在此以后的值均可以丢弃,同理,s[j]之前的值也是......
  • LeetCode 388.文件的最长绝对路径
    题目链接思路针对文件路径的特征,一个文件中一定包含.分隔符,以此为依据可以判定当前字符串是否是一个文件,文件系统是一个树形结构的角度来看的话,题中给定的字符串实际上是以一个树形结构前序遍历的序列,连续的\t表示出了当前的深度,而相邻的节点之间以\n进行分割。假设当前的路径为x/......
  • 006 数据库学习笔记--字符串操作函数 + 索引
    常用字符串操作函数:--返回字符串中指定的子串出现的开始位置(索引从1开始)selectCHARINDEX('34','1234567890123')asstartIndex--返回字符串中指定的子串出现的开始位置(索引从1开始,字串前必须加%)selectPATINDEX('%34%','1234567890123')asstartIndex--大小写转化s......