当前位置: 首页> 财经> 股票 > 在线制作图片及图片处理工具_卓博招聘人才网_交换友情链接的平台有哪些_代发关键词排名包收录

在线制作图片及图片处理工具_卓博招聘人才网_交换友情链接的平台有哪些_代发关键词排名包收录

时间:2025/7/15 0:44:43来源:https://blog.csdn.net/2301_79954395/article/details/147015283 浏览次数:0次
在线制作图片及图片处理工具_卓博招聘人才网_交换友情链接的平台有哪些_代发关键词排名包收录

审题:

本题需要我们根据题目的要求将字符串进行扩展

思路:
方法一:模拟法

一般来说题目字数和要求很多的题就是模拟题,模拟题特别需要注意的就是细节,在编写代码之前一定要把细节想清楚,否则很容易出错。

分析模拟过程:

首先,题目给了我们一个字符串,这个字符串中的某些部分是需要扩展的,有些部分是不用扩展的,在这里我们就分成这两大类

需要扩展:

(1)特殊扩展:对于'-'两边的字符属于顺序递增的情况,我们就直接越过'-'接入output

(2)普通扩展:

控制插入字符:通过if语句控制字母与数字字符的插入字符

控制插入数量:通过append方法控制p2个字符插入

控制插入顺序:通过reverse方法控制p3为2时的顺序

不需要扩展:直接接入output字符串

解题:

#include<iostream>
#include<algorithm>
using namespace std;
int p1, p2, p3;
string input;
string output;
bool issametype(char a, char b)
{return (islower(a) && islower(b)) || (isdigit(a) && isdigit(b));
}
int main()
{cin >> p1 >> p2 >> p3;cin >> input;//输出字符串构建for (size_t i = 0; i < input.size(); i++){//扩展if (i > 0 && i < input.size() - 1 && input[i] == '-' && issametype(input[i-1],input[i+1]) && input[i+1] > input[i-1]){if (input[i - 1] + 1 == input[i + 1]){continue;}string s;//确定待插入临时串sfor (char c = input[i - 1] + 1; c < input[i + 1]; c++){char ch;//展开方式+重复个数if (p1 == 2){if (islower(c))//小写字母单独处理ch = toupper(c);else//数字处理ch = c;}else if (p1 == 3){ch = '*';}else{ch = c;}s.append(p2, ch);		}//插入顺序if (p3 == 2){reverse(s.begin(),s.end());}//插入output += s;}else //不展开{output += input[i];}	}cout << output;
}

注意:

1.利用库方法isdigit判断是否为数字字符,islower判断是否为小写字母。

2.判断越界不要使用i-1,因为i是size_t类型,-1后会变成很大的正数,导致逻辑错乱。

3.对于输出类型部分:p1为1和3对于数字的字母都是一样的,而p1为2就需要分开处理

4.toupper将小写字母转大写,append将多个重复字符插入字符串

P1098 [NOIP 2007 提高组] 字符串的展开 - 洛谷

关键字:在线制作图片及图片处理工具_卓博招聘人才网_交换友情链接的平台有哪些_代发关键词排名包收录

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: