当前位置:   article > 正文

笔试代码题--美团--小美找朋友--判断是否是子字符串_一个字符串a被称作另一个字符串b的子序列,说明从序列b通过去除某些元素但不破

一个字符串a被称作另一个字符串b的子序列,说明从序列b通过去除某些元素但不破

笔试代码题--美团--小美找朋友--判断是否是子字符串


题目描述:

子序列:一个字符串A是另外一个字符串B的子序列,当且仅当可以通过删除若干个字符(也可能一个都不删),其中字符保留原来的顺序,使得形成的新字符串B‘与A串相等,例如:ABC是ABDDC的子序列,而ACB不是ABDDC的子序列。

示例1

输入:

6 3

aabddc

abc

输出:

Yes

10

示例2

输入:

6 3

aabddc

acb

输出:

No

解题思路:只用判断是否是子序列,那么就遍历两个字符串,如果字符相等的话,就同时++,并且记录字符长度count,如果count与j不相等,就返回No。相等的话返回Yes,并且返回长度。

代码如下:

  1. #include <string>
  2. #include <iostream>
  3. using namespace std;
  4. int main()
  5. {
  6. int n,m;
  7. cin >> n >> m;
  8. cin.ignore();
  9. string string1;
  10. string string2;
  11. getline(cin,string1);
  12. getline(cin,string2);
  13. int count = 0;
  14. int i = 0,j = 0;
  15. while(i < n &&j <m)
  16. {
  17. if(string1[i] == string2[j])
  18. {
  19. count += i +1;
  20. i++;
  21. j++;
  22. }
  23. else
  24. {
  25. i++;
  26. }
  27. }
  28. if(j != m )
  29. {
  30. cout << "No" << endl;
  31. }
  32. else
  33. {
  34. cout << "Yes" << endl;
  35. cout << count << endl;
  36. }
  37. return 0;
  38. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/435473
推荐阅读
相关标签
  

闽ICP备14008679号