编写一个名为 find_mismatch 的函数,该函数接受两个字符串作为输入参数

Write a function named find_mismatch that accepts two strings as input arguments

本文关键字:函数 两个 参数 输入 字符串 mismatch 一个 find      更新时间:2023-10-16

我正在尝试编写此函数,但我卡住了。只是想在春假做一些练习。如果有人有全新的方法,我是开放的。我知道这段代码是一个可悲的景象,但我无法理解它。提前谢谢。

  • 如果两个字符串完全匹配,则为 0。
  • 如果两个字符串的长度相同且仅在一个字符中不匹配,则为 1。
  • 如果两个字符串的长度不同或两个或多个字符不匹配,则为 2。

法典:

void findMismatch (const string s1, const string s2)
    {int count;
if (s1.length() != s2.length())
     {
        cout <<"2"<< endl;
     }
if (s1 == s2)
    {
        cout <<"0"<< endl;
    }

这是我整理的解决方案。

#include <iostream>
#include <string>
using namespace std;
void findMismatch(string s1, string s2)
{   
    if(s1.length() != s2.length())
    {
        cout<<"2"<<endl;
    }
    else if(s1 == s2) //exact match
    {
        cout<<"0"<<endl;
        return;
    }
    else
    {
        int mismatchCount = 0;
        int i = 0;
        while(i < s1.length() && mismatchCount<=1)
        {
            if(s1.at(i) != s2.at(i) && ++mismatchCount == 2)
            {
                cout<<"2"<<endl;
                return;
            }
            i++;
        }
        cout<<"1"<<endl;
    }

}
int main()
{
  findMismatch("Achr","Acha"); //one mismatch
  findMismatch("Achrfs","Achaee"); //two or more mismatch
  findMismatch("Ach","Ach"); //exact match
  findMismatch("Achrfdfd","Acha"); //different lengths
}