码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode-确定两字符串是否接近

时间:2021-04-08 13:44:32      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:math   lse   时间   问题   rar   排除   内存   成功   false   

技术图片

 

问题描述如下:

技术图片

 

 分析问题,发现问题实际可理解为

有两个字符串,要求如下:

1、包含的字符种类完全一样;

2、把各个字符的重复次数放在一个数组里,数组在排序后完全一样;

 所以:

class Solution {

    public boolean closeStrings(String word1, String word2) {

        if (word1.length()!=word2.length()) return false; //如果两个字符串长度不一样,返回false

        int[] c1=new int[26];

        int[] c2=new int[26];

        for (char c:word1.toCharArray()) c1[c-97]++;//遍历字符串,用长度 26的数组存放一个字母出现的次数

        for (char c:word2.toCharArray()) c2[c-97]++;

        int i=0;

        for (i=0;i<26;i++) 

            if((c1[i]==0)^(c2[i]==0)) return false;//相同位置的字母,非零性必须一样,用异或运算能显著减少用时

        Arrays.sort(c1);

        Arrays.sort(c2);

        for (i=0;i<26;i++) 

            if(c1[i]!=c2[i]) return false;//排序后的数组得相同

        return true;

    }

}

优化说明:通过减少运算次数,合并可合并操作,优先排除可排除数组的操作,成功优化了执行时间。但内存消耗已经优化不动了,内存消耗38.9MB就能击破100%,但优不动了。

LeetCode-确定两字符串是否接近

标签:math   lse   时间   问题   rar   排除   内存   成功   false   

原文地址:https://www.cnblogs.com/pycdu/p/14629887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!