QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 698|回复: 0
打印 上一主题 下一主题

字符串比较函数---1

[复制链接]
字体大小: 正常 放大
回帖奖励 1 点体力 回复本帖可获得 1 点体力奖励! 每人限 1 次

413

主题

36

听众

1854

积分

升级  85.4%

  • TA的每日心情
    开心
    2019-9-18 21:55
  • 签到天数: 258 天

    [LV.8]以坛为家I

    社区QQ达人

    群组2015国赛冲刺

    群组2016美赛公益课程

    群组国赛讨论

    群组第三届数模基础实训

    群组Matlab讨论组

    跳转到指定楼层
    1#
    发表于 2015-9-24 22:29 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
                    字符串比较函数---1
    在C语言中,函数strcmp根据Ascii码中字符顺序(我们称之为字典顺序)比较两字符,如果第一个字符串的字典顺序在第二个字符串字典之后,函数将会产生-1,如果两字符串相同那么将会产生0,如果第一个字符串的字典顺序在第二个字符串字典之前那么函数将会返回+1。
    创建一个MATLAB函数c_strcmp用来比较两字符串,其功能与C语言strcmp中的函数功能相类似。这个函数对字符串进行比较时,应忽略末尾的空格。注意这个函数必须控制两字符串不同长的情况。

    答案:
    1. 陈述问题
    编写一个函数,比较两字符串str1和str2,并返回以下结果
    l -1    如果str1在字典顺序比str2的晚
    l 0     如果两字符串的字典顺序相同
    l +1   如果str1的字典顺序比str2的早
    2. 定义输入输出量
    函数所需的输入量为两个字符串,str1和str2。这个函数的输出为-1、0或1。
    3. 描述算法这个工程可分为以下四大步
    Verify input strings
    Pad strings to be equal length
    Compare characters from beginning to end, looking for the firstdifference
    Return a value based on the first difference
    我们将以上每一大步分解成更小的更细的小块。第一,我们必须验证传递给函数的数据是正确的。函数必须有两个参数,且这两个参数必须为字符。这一步的伪代码为
    % Check for a legal number of input arguments.
    msg = nargchk(2, 2, nargin)
    error(msg)
    % Check to see if the arguments are strings
    if either argument is not a string
           error('str1 and str2must both be strings')
    else
           (add code here)
    end
    下一步,我们要做的是把这两个字符串具有相同的长度。最简单的方法是用strvcat函数把这两个字符串联合成一个二维数组。注意在这个步骤中产生字符串末端空格只是为了两字符串相等,所以这些空格可以被省略。
    % Pad strings
    strings = strvcat(str1, str2)
    现在我们要对字符串中的每一个字符进行比较,直到我们一个不同的字符出现,并基于这种不同返回相应的值。为了达到这个止目的,其中的方法是应用关系运算符比较两个字符串,产生一个由0和1组成的数组。然后我们可以寻找第一个1,因为它两字符串在这里出现第一次不同。这一步的伪代码如下
    % Compare strings
    diff = strings(1, ~= strings(2,
    if sum(diff) == 0
           % Strings match
           result = 0
    else
           % Find first difference
           ival = find(diff)
           if strings(1, ival(1))> strings(2, ival(1))
                  result = 1
           else
                  result = -1
           end
    end



    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    数学中国版主团队!
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-21 03:35 , Processed in 0.385240 second(s), 51 queries .

    回顶部