【C++ STL】字符串截取 substr(int pos, int n)

题目

如果两字符串 a, b 满足下面两个条件之一,我们称 a 弱等于 b,或者 b 弱等于 a:

  1. a 等于 b
  2. a, b 的长度相同,并且长度都为偶数,把字符串 a 串从正中间拆开,拆成 a_{1} ,a_{2} ,同样把 b 串拆成 b_{1}b_{2} 。a_{1} 弱等于 b_{1} 同时 a_{2} 弱等于 b_{2} ,或者 a_{1} 弱等于 b_{2} 同时 a_{2}  弱等于 b_{1}

输入格式

输入共两行,每行一个字符串,字符串只包含小写字母。

输出格式

如果输入两个字符串是弱等于的,输出"YES",否则输出"NO"。

 代码

#include<bits/stdc++.h>
using namespace std;
bool judge(string a, string b){
    if(a == b)
    	return true;
    else{
        if(a.length() == b.length() && (a.length() / 2 != 0)){
            string a1 = a.substr(0, a.size() / 2);
            string a2 = a.substr(a.size() / 2, a.size() / 2);
            string b1 = b.substr(0, b.size() / 2);
            string b2 = b.substr(b.size() / 2, b.size() / 2);
            return (judge(a1, b1) && judge(a2, b2)) || (judge(a1, b2) && judge(a2, b1));
        }else{
            return false;
        }
    }
}
int main(){
    string a, b;
    cin >> a >> b;
    bool flag = judge(a, b);
    if(flag)
        cout << "YES";
    else{
        cout << "NO";
    }
    return 0;
}

总结

substr有2种用法:
假设:string s = "0123456789";

string sub1 = s.substr(5); //只有一个数字5表示从下标为5开始一直到结尾:sub1 = "56789"
string sub2 = s.substr(5, 3); //从下标为5开始截取长度为3位:sub2 = "567"
发布了62 篇原创文章 · 获赞 34 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_41960890/article/details/105209913
今日推荐