每日编程题 :统计回文
链接:
https://www.nowcoder.com/practice/9d1559511b3849deaa71b576fa7009dc?tpId=85&&tqId=29
842&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking
【题目解析】:
首先以后面对这种题目描述比较长的题,不要害怕,它里面的大部分描述都只是为题做铺垫,所以读题时抓
住重点。
什么是回文字符串,题目里面说就是一个正读和反读都一样的字符串 ,回文串也就是前后对称的字符串。本
题是判断是否是回文串的变形题。字符串本身不一定是回文,把第二个字符串插入进去看是否是回文。
【解题思路】:
本题使用暴力求解方式计算即可,遍历
str1
,将
str2 insert
进入
str1
的每个位置,判断是否是回文,这里注意
的是,判断回文的时候,直接将字符串逆置,看是否相同就好了。是就
++count
;需要注意的是这里不能
str1.insert(i, str2)
,这样的话
str1
改变了,判断下一个位置就不对了。所以每次使用
str1
重新给一个
str,然后str.insert(i, str2)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
int len = str1.length();
int n = 0;
for (int i = 0; i <= len; i++) {
// 将字符串2插入到字符串1的每个位置,再判断是否是回文
StringBuffer str = new StringBuffer(str1);
str.insert(i, str2);
//注意这里,不能直接StringBuilder str5 = str.reverse();
//因为这样str本身又变了。
StringBuilder tmp = new StringBuilder(str);
StringBuilder str5 = tmp.reverse();
if (str.toString().equals(str5.toString())) {
n++;
}
}
System.out.println(n);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现