zoukankan      html  css  js  c++  java
  • b_lc_确定两个字符串是否接近(思维题:分类讨论)

    用两种操作使两个字符串是是偶发接近

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

    思路:分类讨论

    • 当两个字符串中的频次都一样时,肯定true
    • 否则,我们可初步确定两个字符串的频次不一样或者它们拥有对方没有的字符
      • 字符种类的个数不一样可以,但是它们要满足具有相同频次,因为即使种类不一样,可以通过转换变为一样
    class Solution {
    public:
        int m1[26], m2[26];
        bool closeStrings(string& s, string& t) {
            int n=s.size(), m=t.size();
            if (n!=m) return false;
            unordered_set<char> s2;
            for (char c : s) m1[c-'a']++;
            for (char c : t) m2[c-'a']++, s2.insert(c);
            bool allEquals=true;
            for (int c=0; c<=25; c++) if (m1[c]!=m2[c]) {
                allEquals=false;
                break;
            }
            if (allEquals) return true;
            sort(m1,m1+26), sort(m2,m2+26);
            for (int c=0; c<=25; c++) if (m1[c] != m2[c]) return false;
            for (char c : s) if (s2.find(c)==s2.end()) return false;
            return true;
        }
    };
    
  • 相关阅读:
    数据提交方式:post和get
    什么是SQL注入式攻击和如何防范?
    CSS3 @keyframes 规则
    php数据库连接及简单操作
    深入理解CSS过渡transition
    css 选择器
    利用border制作三角形原理
    iOS 8 自适应 Cell
    dSYM 文件分析工具
    iOS开发使用半透明模糊效果方法整理
  • 原文地址:https://www.cnblogs.com/wdt1/p/13976186.html
Copyright © 2011-2022 走看看