填空题

伪正则表达式

发布于 2022-03-03 16:48:00

判断一个数字串是否匹配一个表达式,具体如下:
1)表达式m:一定不为空,只能由数字和“*”构成,其中的“*”表示匹配一个或多个“它前面所有非”*“的数字的和值除以10的余数”;“*”如果在最前面或其前面都是“*”,则只可以是任意一个数字。
2)数字串s:可能为空,只能由数字构成,不能包含其它字符。
3)是否匹配:匹配要求覆盖整个数字串s,而不是某一部分匹配。

解题要求:不能将m转写成标准正则表达式来解题,需要自己编程实现匹配算法。

注意,对应objc语言,系统里的@autoreleasepool {} 需要改写成如下形式
#import <Foundation/Foundation.h>
//strcmp
//NSString:
//- (NSArray<NSString *> *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator
//- (unichar)characterAtIndex:(NSUInteger)index
//- (NSString *)substringWithRange:(NSRange)range

int main(int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]
    //...
    //add your code
    //...
    [pool drain]
    return 0
}

输入描述: 见输入样例,其中最后一行的0表示结束输入输入样例: 3 1* 11111 **1 121 **1 1221 0 输出描述: YES:匹配

NO:不匹配输出样例 YES YES NO
关注者
0
被浏览
53