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


相关文章
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
|
14天前
|
PHP
在数组中,找出给定数字的出现次数,比如[1,2,3,2,2]中2的出现次数是3次(任意编程语言描述)
在数组中,找出给定数字的出现次数,比如[1,2,3,2,2]中2的出现次数是3次(任意编程语言描述)
22 0
|
1天前
求两个整数的较大值
两幅图片展示,无文字描述。第一张图链接源为:[结果](https://so.csdn.net/so/search?q=%E7%BB%93%E6%9E%9C&spm=1001.2101.3001.7020)。
8 1
求两个整数的较大值
|
14天前
|
存储 缓存 负载均衡
常用性能数字
【2月更文挑战第26天】常用性能数字
48 2
常用性能数字
力扣1849 哪种连续子字符串更长
力扣1849 哪种连续子字符串更长
|
7月前
|
算法
【每日挠头算法(4)】字符串相加|字符串相乘
【每日挠头算法(4)】字符串相加|字符串相乘
LeetCode 1869. 哪种连续子字符串更长
给你一个二进制字符串 s 。如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true ;否则,返回 false 。
54 0
|
算法 前端开发 测试技术
【前端算法】字符串中连续最多的字符以及次数
双指针与双层循环“跳步”的比较
字符串中的单词数(简单难度)
字符串中的单词数(简单难度)
58 0
字符串中的单词数(简单难度)

热门文章

最新文章