当前位置: 首页 > news >正文

C - Word Ladder题解

C - Word Ladder 题解

解题思路:

先输入两个字符串St

然后在ST中寻找有多少个字符不同的个数(也就是需要变换多少次)

开始替换时:
tips: 字符串下标以0开始

我们定义两个变量a和b,用于记录当前遍历到的字符

首先是判断:如果这时a已经==b了,那么就跳过,不用管;

如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。

这样输出可以免了还要搞个string类数组去存一大堆东西,搞不好还容易错

然后再倒过来看:

还是熟悉的a=s[i],b=t[i],还是熟悉的判断,但是这一次我们是查漏补缺(也就是看看哪个地方还没改为t的样子)

为什么第一次不直接全部替换掉而第二次又来从后往前找呢?

因为第一次找我们要保证『字符串数组的词典顺序』,而第二次从后往前就是找那个还没换成T而已.

上代码:

#include <iostream>		// 基本输入输出流
#include <algorithm>	// 通用算法(排序、查找、去重、二分查找等)
#include <vector>		// 动态数组(空间不够会自动扩容)
#include <queue>		// 队列(先进先出)
#include <stack>		// 栈(先进后出)
#include <set>			// 集合(有序不重复)
#include <map>			// 键值对容器(映射)
#include <list>			// 双向链表
#include <math.h>		// 数学函数
#include <functional>	// 通用的函数绑定和调用机制#define endl '\n'
#define pii pair<int, int>
#define pdd pair<double, double>
#define fi first
#define se second
#define pb push_back
#define eb emplace_back
#define int long long
using namespace std;const int inf = 1e9 + 7;
const int mod = 998244353;
const int N = 2e5 + 10, M = N << 1;
char a, b;
int m;
void solve() {string s, t;cin >> s >> t;int n = s.size();for(int i = 0; i < n; i++){if(s[i] != t[i]) m++;}cout << m << endl;for(int i = 0; i < n; i++){a = s[i], b = t[i];if(a == b)continue;if(a > b){s[i] = b;cout << s << endl;}}for(int i = n - 1; i >= 0; i--){a = s[i], b = t[i];if(a == b) continue;s[i] = b;cout << s << endl;}
}
signed main() {ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int t = 1;while(t--) solve();return 0;
}

完结!


http://www.mrgr.cn/news/22382.html

相关文章:

  • 高可用架构模式
  • 操作系统概述(三、虚拟化)
  • Java过滤器和监听器
  • 弄清楚学习PostgreSql的初衷是什么?
  • 【网络】UDP协议的简单使用
  • 详细介绍 `networkx` 库,探讨它的基本功能、如何创建图、操作图以及其常用参数。
  • 深度学习中常见的权重参数初始化方法
  • 数据库的操作:SQL语言的介绍
  • mini-httpd移植到ARM Linux及如何支持https
  • 使用Python实现深度学习模型:智能保险风险评估
  • Spring 中依赖注入注解的区别详解
  • 频谱图在频率为0附近有较大幅度,这是为什么
  • 如何处理软件卸载不干净的情况?
  • 轨迹规划-B样条
  • 面试准备-6
  • 利用前缀信息解决子数组问题(上)
  • 【计算机网络】TCP协议(下)
  • 《C Primer Plus》第 11 章复习题和编程练习
  • Vue面试题1
  • PostgreSQL核心功能特性与使用领域及场景分析