字符串通配符
| 描述: |
问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
|
| 知识点: | 字符串 |
| 题目来源: | 内部整理 |
| 练习阶段: | 初级 |
| 运行时间限制: | 10Sec |
| 内存限制: | 128MByte |
| 输入: |
先输入一个带有通配符的字符串,再输入一个需要匹配的字符串 |
| 输出: |
返回匹配的结果,正确输出true,错误输出false |
| 样例输入: |
te?t*.*
txt12.xls
|
| 样例输出: |
false |
思想很简单,就是逐位相加,保存进位,用作下一次相加
* 分析:
* 1、取得两个字符串的长度
* 2、把两个的长度做比较,并得出较长的长度,及较短的长度
* 3、把长度较短的加数字符串,在左面补0,使之与较长的字符串一样长
* 4、从最高位,一个个数的取出来相加,当然首先得转换为整型
* 5、设置进位,如果两个数相加及加上进位大于等于10,并且这不是最左边一个字符相加,相加结果等于
* (取出1+取出2+进位)-10,并把进位设为1;如果没有大于10,就把进位设为0,如些循环,把
* 相加的结果以字符串的形式结合起来,就得到最后的结果
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#include <iostream>#include <string>using namespace std;string Addition(string one, string two);int main(){ string first, second; while(1) { cout << "Please enter two numbers(enter 0 to quit):\n"; cin >> first >> second; if("0"==first && "0"==second) break; cout << "The result is: " << Addition(first, second) << endl; } return 0;}string Addition(string one, string two){ int j, max; //分别表示第一,二个字符串的长度 int flen, slen; string sum; flen = one.size(); slen = two.size(); if(flen >= slen) max = flen; else max = slen; //将的每一位都设为0 sum.resize(max, '0'); //将的每一位都加上first[j]对应的位 for(j=0;j<flen;j++) sum[max-j-1] = sum[max-j-1] + one[flen-j-1] - '0'; //将的每一位都加上second[j]对应的位 for(j=0;j<slen;j++) sum[max-j-1] = sum[max-j-1] + two[slen-j-1] - '0'; //如果第j位的数大于9,则将其减10,并向上一位进一 for(j=max-1;j>=1;j--) if(sum[j] > '9') { sum[j] -= 10; sum[j-1]++; } if(sum[0] > '9') { sum[0] -= 10; sum = "1" + sum; } return sum;} |
本文深入探讨了信息技术领域的核心概念,包括但不限于前端开发、后端开发、移动开发、游戏开发、大数据开发、开发工具、嵌入式硬件、嵌入式电路知识、嵌入式开发环境、音视频基础、音视频直播流媒体、图像处理AR特效、AI音视频处理、测试、基础运维、DevOps、操作系统、云计算厂商、自然语言处理、区块链、隐私计算、文档协作与知识管理、版本控制、项目管理与协作工具、有监督学习、无监督学习、半监督学习、强化学习、数据安全、数据挖掘、数据结构、算法等。文章旨在为读者提供一个全面而深入的技术知识框架,帮助理解并掌握信息技术领域的关键技能。
980

被折叠的 条评论
为什么被折叠?



