本文介绍: 不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。如果可以使用以下操作一个字符串得到另一个字符串,则认为两个字符串。你可以根据需要任意一个字符串多次使用这两种操作。2 次操作从 word1 获得 word2。3 次操作从 word1 获得 word2。执行操作 1:”ca

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

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

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

示例 1:

输入word1 = "abc", word2 = "bca"
输出true
解释2 次操作从 word1 获得 word2 。
执行操作 1:"abc" -> "acb"
执行操作 1:"acb" -> "bca"

示例 2:

输入word1 = "a", word2 = "aa"
输出false
解释不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。

示例 3:

输入:word1 = "cabbba", word2 = "abbccc"
输出true
解释3 次操作从 word1 获得 word2 。
执行操作 1:"cabbba" -> "caabbb"
执行操作 2:
“caabbb" -> "baaccc"
执行操作 2:"baaccc" -> "abbccc"

示例 4:

输入:word1 = "cabbba", word2 = "aabbss"
输出false
解释不管执行多少次操作,都无法从 word1 得到 word2 ,反之亦然。

c++解法

class Solution {
public:
    int a[26],b[26];
    bool closeStrings(string word1, string word2) {
        int len1 = word1.size();
        int len2 = word2.size();
        for(int i=0;i<len1;++i)
            a[word1[i]-'a']++;
        for(int i=0;i<len2;++i)
            b[word2[i]-'a']++;
        for(int i=0;i<26;++i){
            if(a[i]>0 &amp;&amp; b[i]==0)
                return false;
            if(b[i]>0 &amp;&amp; a[i]==0)
                return false;
        }
        sort(a,a+26);
        sort(b,b+26);
        for(int i=0;i<26;++i)
        {
            if(a[i]!=b[i])
                return false;
        }
        return true;
    }
};

原文地址:https://blog.csdn.net/si_mple_/article/details/134719485

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_19958.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注