c中怎么实现查看两个字符串的匹配情况,返回能够匹配的字符的个数

比如,一个字符串是w_angqmab,,,另一个字符串是w+bangemx,,我想编写一个函数,,让它返回后一个字符串与前一个字符串得到匹配字符的个数,,,,我该怎么编写函数啊,,求大神们指点!!!!万分感谢!!!急急急急~~~~

c

5个回答

排序后再比较计数。
用C#演示一下,C的处理方式类似。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void BubbleSort(char[] a)
        { 
            ...
        }

        static int CalcMatchCount(string s1, string s2)
        {
            char[] a1 = s1.ToCharArray();
            char[] a2 = s2.ToCharArray();
            BubbleSort(a1);
            BubbleSort(a2);
            // DEBUG
            Console.WriteLine(new string(a1));
            Console.WriteLine(new string(a2));

            int c = 0;
            for (int i1 = 0, i2 = 0; (i1 < a1.Length) && (i2 < a2.Length); )
            {
                switch (Math.Sign( a1[i1].CompareTo(a2[i2])))
                {
                    case -1:
                        i1++;
                        break;
                    case 0:
                        c++;
                        i1++;
                        i2++;
                        break;
                    case 1:
                        i2++;
                        break;
                }

            }
            return c;
        }

        static void Main(string[] args)
        {
            string s1 = "w_angqmab";
            string s2 = "w+bangemx";
            Console.WriteLine(CalcMatchCount(s1, s2));
            Console.ReadLine();
        }
    }
}

结果

_aabgmnqw
+abegmnwx
6

是不是还是哪个拼写错误的问题呀?
你可以先比较两个字符串的长度,不一致的话,就算是不匹配。
一致的话就对每个位置的字符作比较,一致的话,就计1,这样就能得到匹配的字符数了。

for循环同时历遍2个字符串,比较取得的字符是否相同并计数。

是求最长公共子串吗?如果是的话,网上有很多的实现代码

C库中有相关函数,诸如strstr();你去找个c文档看一下就行了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问