当前位置:   article > 正文

E-Another string problem_第五届太原理工大学程序设计竞赛新生赛答案

第五届太原理工大学程序设计竞赛新生赛答案

题目描述: 


E-Another string problem_第五届太原理工大学程序设计竞赛新生赛(同步赛) (nowcoder.com)

对于两个字符串 sss 和 ttt ,若 可以通过 修改、删除或增加 sss 中的任意一个字符将 sss 变为 ttt ,则认为这两个字符串的编辑距离为 1 。注意,只能选择一个操作,例如如果选择修改一个字符就不能再增加或删除字符了。

给定两个由小写字母组成的不同的字符串 sss 与 ttt ,请判断这两个字符串编辑距离是否为 1 。


输入描述:



输入共两行,第一行一个字符串 sss ,第二行一个字符串 ttt 。保证每个字符串仅由小写字母组成,且长度不超过 10510^5105 。


输出描述:

如果编辑距离为 1 则输出 "YES" ,否则输出 "NO" 。

 

 

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef pair<int,int> pii;
  5. const int MAXN = 1e5+7;
  6. int main()
  7. {
  8. int cm =0;
  9. string a,b;
  10. cin>>a>>b;
  11. int flagg = 0;
  12. int flags = 0;
  13. if(a==b)
  14. {
  15. cout<<"YES";
  16. return 0;
  17. }
  18. else
  19. {
  20. int aa = a.size();
  21. int bb = b.size();
  22. if(a.size()==b.size())
  23. {
  24. for(int i=0;i<a.size();i++)
  25. {
  26. if(a[i]!=b[i])
  27. {
  28. flagg++;
  29. }
  30. }
  31. }
  32. else if(fabs(aa-bb)==1)
  33. {
  34. if(a.size()<b.size())
  35. {
  36. while(a.size()>0&&b.size()>0)
  37. {
  38. if(a[a.size()-1]==b[b.size()-1])
  39. {
  40. a.pop_back();
  41. b.pop_back();
  42. }
  43. else
  44. {
  45. if(a[a.size()-1]==b[b.size()-2])
  46. {
  47. b.pop_back();
  48. flags++;
  49. }
  50. else
  51. {
  52. cout<<"NO";
  53. return 0;
  54. }
  55. }
  56. }
  57. }
  58. else
  59. {
  60. while(b.size()>0&&a.size()>0)
  61. {
  62. if(a[a.size()-1]==b[b.size()-1])
  63. {
  64. a.pop_back();
  65. b.pop_back();
  66. }
  67. else
  68. {
  69. if(a[a.size()-2]==b[b.size()-1])
  70. {
  71. a.pop_back();
  72. flags++;
  73. }
  74. else
  75. {
  76. cout<<"NO";
  77. return 0;
  78. }
  79. }
  80. }
  81. }
  82. }
  83. else
  84. {
  85. cout<<"NO";
  86. return 0;
  87. }
  88. }
  89. if(flags<2 && flagg<2) cout<<"YES";
  90. else cout<<"NO";
  91. return 0;
  92. }

大模拟,没什么好说的 

下面是柳某的代码:

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MAX = 1000000;
  4. long long N, M, ans;
  5. string s1, s2;
  6. int main()
  7. {
  8. ios::sync_with_stdio(0);
  9. cin.tie(0);
  10. cout.tie(0);
  11. cin >> s1 >> s2;
  12. int A = s1.size(), B = s2.size();// s t
  13. int K = abs(A - B);
  14. bool f = 1;
  15. if (abs(A - B) >= 2)
  16. {
  17. cout << "NO" << endl;
  18. return 0;
  19. }
  20. else
  21. {
  22. for (int i = 0, j = 0; i < s1.size(); i++, j++)
  23. {
  24. if (s1[i] != s2[j])
  25. {
  26. if (A > B && s1[i + 1] == s2[j] && f)
  27. {
  28. i++;
  29. f = 0;
  30. }
  31. else if (A < B && s1[i] == s2[j + 1] && f)
  32. {
  33. j++;
  34. f = 0;
  35. }
  36. else
  37. K++;
  38. }
  39. }
  40. }
  41. if (K <= 1)cout << "YES";
  42. else
  43. cout << "NO";
  44. return 0;
  45. }

下面是莫某的代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. string s, t;
  4. int main()
  5. {
  6. cin>>s>>t;
  7. int len1 = s.size();
  8. int len2 = t.size();
  9. // cout<<s<<'\n'<<t<<'\n';
  10. if(abs(len1-len2) > 1)
  11. {
  12. cout<<"NO";
  13. return 0;
  14. }
  15. if(len1 == len2)
  16. {
  17. int cnt = 0;
  18. for(int i=0; i<len1; i++)
  19. if(s[i] != t[i])
  20. {
  21. cnt++;
  22. if(cnt > 1)
  23. {
  24. cout<<"NO";
  25. return 0;
  26. }
  27. }
  28. cout<<"YES";
  29. }
  30. if(len1 < len2)
  31. {
  32. int cnt = 0;
  33. for(int i=0, j=0; i<len1 && j<len2; i++, j++)
  34. if(s[i] != t[j])
  35. {
  36. cnt++;
  37. if(s[i] != t[++j]) cnt++;
  38. if(cnt > 1)
  39. {
  40. cout<<"NO";
  41. return 0;
  42. }
  43. }
  44. cout<<"YES";
  45. }
  46. if(len1 > len2)
  47. {
  48. int cnt = 0;
  49. for(int i=0, j=0; i<len1 && j<len2; i++, j++)
  50. if(s[i] != t[j])
  51. {
  52. cnt++;
  53. if(s[++i] != t[j]) cnt++;
  54. if(cnt > 1)
  55. {
  56. cout<<"NO";
  57. return 0;
  58. }
  59. }
  60. cout<<"YES";
  61. }
  62. return 0;
  63. }

下面是陈某的代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main(void){
  4. string s,ss;
  5. cin>>s>>ss;
  6. int x=s.size(),y=ss.size();
  7. //cout<<x<<y;
  8. if(s.size()==ss.size()){
  9. int flag=0;
  10. for(int i=0;i<s.size();i++){
  11. if(s[i]!=ss[i])flag++;
  12. }
  13. if(flag<=1)cout<<"YES";
  14. else cout<<"NO";
  15. }
  16. else if(fabs(x-y)==1){
  17. int flag=0;
  18. for(int i=0;i<(x>y?y:x);i++){
  19. if(x>y&&s[i+flag]!=ss[i]){flag++;i--;}
  20. else if(x<y&&s[i]!=ss[i+flag]){flag++;i--;}
  21. }
  22. if(flag<=1)cout<<"YES";
  23. else cout<<"NO";
  24. }
  25. else cout<<"NO";
  26. return 0;
  27. }

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

闽ICP备14008679号