【笔试刷题】移动-2025.11.09-改编真题
✅ 秋招备战指南 ✅
💡 学习建议:
- 先尝试独立解题
- 对照解析查漏补缺
🧸 题面描述背景等均已深度改编,做法和题目本质基本保持一致。
🍹 感谢各位朋友们的订阅,你们的支持是我们创作的最大动力
🌸 目前本专栏已经上线180+套真题改编解析,后续会持续更新的
春秋招笔试机考招合集 -> 互联网必备刷题宝典🔗
移动-2025.11.09
题目一:镜像字符串的最小修改
1️⃣:计算字符串长度的一半
2️⃣:遍历前半段,统计与后半段不匹配的字符对数量
3️⃣:不匹配的对数即为最小修改次数
难度:简单
题目二:数值倍增的最短路径
1️⃣:判断
是否能被
整除,不能则无解
2️⃣:枚举
的幂次
,对每个
计算剩余部分能否用
的幂次表示
3️⃣:找到使
最小的组合
难度:中等
1. 镜像字符串的最小修改
问题描述
K 小姐在研究字符串的对称性时,发现了一种特殊的字符串结构——镜像字符串。如果一个长度为偶数的字符串,它的前半部分和后半部分完全相同,那么就称这个字符串为镜像字符串。
例如:""、"
"、"
" 都是镜像字符串,因为它们的前半段和后半段是完全相同的。
现在 K 小姐手里有一个长度为偶数的字符串,她可以进行任意次修改操作,每次操作可以选择字符串中的某个字符,将其改为任意的字符。
请你帮助 K 小姐计算,至少需要进行多少次修改操作,才能将这个字符串变成镜像字符串?
输入格式
一行包含一个长度为偶数的字符串 ,字符串仅由小写英文字母组成。
输出格式
输出一个整数,表示将字符串变成镜像字符串所需的最少修改次数。
样例输入
abhabh
abagba
样例输出
0
1
数据范围
为偶数
- 字符串仅由小写英文字母组成
| 样例 | 解释说明 |
|---|---|
| 样例1 | 字符串 " |
| 样例2 | 字符串 " |
题解
这道题的核心思路很简单:既然要让字符串变成镜像字符串,那就要保证前半段和后半段完全相同。
假设字符串长度为 ,我们把字符串分成两半:前半段是位置
到
,后半段是位置
到
。要让这个字符串成为镜像字符串,只需要让每一对对应位置的字符相同即可,也就是让
和
对于所有
都相等。
对于每一对位置 :
- 如果
,这一对已经相同,不需要修改
- 如果
,这一对不同,需要修改其中一个字符
因此,答案就是统计有多少对位置上的字符不相同。
具体算法步骤:
- 读入字符串
,计算其长度的一半
- 遍历前半段的每个位置
(从
到
)
- 比较
和
是否相同
- 统计不相同的对数,即为答案
时间复杂度:,只需要遍历一次字符串的前半部分。对于长度不超过
的字符串,这个复杂度完全可以接受。
空间复杂度:,只使用了常数级别的额外空间。
参考代码
- Python
import sys
input = lambda: sys.stdin.readline().strip()
# 读入字符串
s = input()
# 计算字符串长度的一半
half = len(s) // 2
# 统计不相同的字符对数量
cnt = 0
# 遍历前半段的每个位置
for i in range(half):
# 如果对应位置的字符不同,计数加一
if s[i] != s[i + half]:
cnt += 1
# 输出最小修改次数
print(cnt)
- Cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
cin >> s;
// 获取字符串长度的一半
int n = s.size() / 2;
int ans = 0;
// 遍历前半段,统计不匹配的字符对
for (int i = 0; i < n; i++) {
// 如果前后对应位置字符不同,答案加一
if (s[i] != s[i + n]) {
ans++;
}
}
// 输出结果
cout << ans << endl;
return 0;
}
- Java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 读入字符串
String s = sc.next();
// 计算字符串长度的一半
int half = s.length() / 2;
int result = 0;
// 遍历前半段的每个位置
for (int i = 0; i < half; i++) {
// 比较对应位置的字符是否相同
if (s.charAt(i) != s.charAt(i + half)) {
result++;
}
}
// 输出最小修改次数
System.out.println(result);
sc.close();
}
}
2. 数值倍增的最短路径
问题描述
A 先生是一位数学家,他在研究一个有趣的数值变换问题。他手里有一台特殊的计算器,这台计算器只能执行两种操作:
- 操作一:将当前数字乘以
- 操作二:将当前数字乘以
现在 A 先生有一个初始数字 ,他希望通过若干次操作将这个数字变成目标数字
。每次操作可以选择执行操作一或操作二,操作次数不限。
A 先生想知道,从 变换到
,最少需要执行多少次操作?如果无论如何都无法达到目标数字
,则输出
。
输入格式
一行包含四个正整数 ,用空格隔开,分别表示乘数
、乘数
、初始数字
和目标数字
。
输出格式
输出一个
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
互联网刷题笔试宝典,这里涵盖了市面上大部分的笔试题合集,希望助大家春秋招一臂之力

查看8道真题和解析