力扣-859题 亲密字符串(C++)- 模拟

题目链接:https://leetcode-cn.com/problems/buddy-strings/
题目如下:
在这里插入图片描述
在这里插入图片描述

class Solution {
    
    
public:
    bool buddyStrings(string s, string goal) {
    
    
        if(s.size()!=goal.size()) return false;//长度不同,false

        int into_flag=1;
        string str1="",str2="";
        for(int i=0;i<s.size();i++){
    
    
            if(s[i]!=goal[i]){
    
    
                str1+=s[i];
                str2+=goal[i];
                into_flag=-1;
            }
        }

        //两个string完全相同的情形,要判断一个string中是否有重复字符
        if(into_flag==1){
    
    
            unordered_set<char> uset1;
            int i;
            for(i=0;i<s.size();i++){
    
    
                if(uset1.count(s[i])!=0) return true;
                else uset1.insert(s[i]);
            }
            return false;
        }else{
    
    //两个字符串存在不相同的地方,但可以相互抵消
            reverse(str1.begin(),str1.end());
            if(str1==str2&&str1.size()==2) return true;
        }

        return false;

    }
};

おすすめ

転載: blog.csdn.net/qq_40467670/article/details/121525639