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);
    }
}


相关文章
|
5天前
|
PHP
在数组中,找出给定数字的出现次数,比如[1,2,3,2,2]中2的出现次数是3次(任意编程语言描述)
在数组中,找出给定数字的出现次数,比如[1,2,3,2,2]中2的出现次数是3次(任意编程语言描述)
22 0
力扣1849 哪种连续子字符串更长
力扣1849 哪种连续子字符串更长
|
7月前
|
存储 算法 索引
【每日挠头算法题(3)】字符串解码|数组中重复的数字
【每日挠头算法题(3)】字符串解码|数组中重复的数字
|
11月前
|
算法 测试技术 索引
算法创作|至少是其他数字两倍的最大数
算法创作|至少是其他数字两倍的最大数
61 0
LeetCode 1869. 哪种连续子字符串更长
给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 false 。
53 0
|
算法 前端开发 测试技术
【前端算法】字符串中连续最多的字符以及次数
双指针与双层循环“跳步”的比较
给定一个数值,计算最合适的行列数量的代码
给定一个数值,计算最合适的行列数量的代码
73 0
字符串中的单词数(简单难度)
字符串中的单词数(简单难度)
58 0
字符串中的单词数(简单难度)