1657.确定两个字符串是否接近

简介: 1657.确定两个字符串是否接近

题目:如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :

  • 操作 1:交换任意两个 现有 字符。
  • 例如,abcde -> aecdb
  • 操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。
  • 例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )

你可以根据需要对任意一个字符串多次使用这两种操作。

给你两个字符串,word1 和 word2 。如果 word1 和 word2 接近 ,就返回 true ;否则,返回 false 。

解题思路:两个字符串接近的充分必要条件为:

1.两个字符串出现的字符集S1和S2相等,即S1=S2.

2.分别将两个字符串的字符出现次数数组f1 和 f2 进行排序后,两个数组从小到大——相等。

class Solution{
    public boolean closeStrings(String word1,String word2){
        int[] count1=new int[26],count2=new int[26];
        for(char c:word1.toCharArray()){
            count1[c-'a']++;        
        }    
        for(char c:word2.toCharArray()){
            count2[c-'a']++;        
        }
        for(int i=0;i<26;i++){
            if(count1[i]>0 && count2[i]==0 || count1[i]==0 && count2[i]>0){
                return false;            
            }        
        }
        Arrays.sort(count1);
        Arrays.sort(count2);
        return Arrays.equals(count1,count2);
    }
}


相关文章
|
8月前
求两个整数的较大值
两幅图片展示,无文字描述。第一张图链接源为:[结果](https://so.csdn.net/so/search?q=%E7%BB%93%E6%9E%9C&spm=1001.2101.3001.7020)。
44 1
求两个整数的较大值
力扣1849 哪种连续子字符串更长
力扣1849 哪种连续子字符串更长
|
机器人 Java 开发工具
生成指定长度的随机数字,用对方法精准提效数10倍!
生成指定长度的随机数字这一函数功能可能在以下情况下被使用:
LeetCode 1869. 哪种连续子字符串更长
给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 false 。
82 0
字符串中的单词数(简单难度)
字符串中的单词数(简单难度)
92 0
字符串中的单词数(简单难度)
【每日一题Day99】LC1663具有给定数值的最小字符串 | 贪心
如果k−(n−i)∗26<=1,那么表示尾部全部插入z,没有分数剩余甚至还有同于,那么第i个字符可以插入的最小字符'a',贡献的分数为1
73 0
|
算法 前端开发 测试技术
【前端算法】字符串中连续最多的字符以及次数
双指针与双层循环“跳步”的比较
118 0
lodash判断值是否是原始有限数值
lodash判断值是否是原始有限数值
112 0