P1307 [NOIP2011 普及组] 数字反转
[NOIP2011 普及组] 数字反转
题目描述
给定一个整数 NNN,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
一个整数 NNN。
输出格式
一个整数,表示反转后的新数。
样例 #1
样例输入 #1
123
样例输出 #1
321
样例 #2
样例输入 #2
-380
样例输出 #2
-83
提示
【数据范围】
$-1,000,000,000\leq N\leq 1,000,000,000 $。
noip2011 普及组第一题\
代码
第一遍的
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;@SuppressWarnings("all")
public class Main{public static void main(String [] args){Scanner scanner = new Scanner(System.in);String next = scanner.next();StringBuffer stringBuffer = new StringBuffer(next);stringBuffer.reverse();if(Integer.parseInt(next)>0) {for(int i=0;i<stringBuffer.length();i++) {if(stringBuffer.charAt(i)=='0') {stringBuffer.delete(i, i+1);}else {break;}}}else if (Integer.parseInt(next)==0) {} else {stringBuffer.delete(stringBuffer.length()-1, stringBuffer.length());for(int i=0;i<stringBuffer.length();i++) {if(stringBuffer.charAt(i)=='0') {stringBuffer.delete(i, i+1);}else {break;}stringBuffer.insert(0, '-');}}System.out.println(stringBuffer);
}
}
结果
我蒙了,然后我看输入
900000000
我就知道有问题了
for(int i=0;i<stringBuffer.length();i++)
这个stringBuffer.length()是会变的,判断一次变一次奥好像?
比如这个例子,你一直减stringbuffer长度,i也在增长,i=4时候,正好,人家长度变成5了
正好你判断条件不成立了,后面的条件也判断不了了
用一个变量存储起来就行了
而且!删除的位置也是不对的
stringBuffer.delete(i, i+1);
这就相当于你判断的第一个删除人家后一个,这种做法不行
所以,就直接删除第一个就可以
改为
stringBuffer.delete(0, 1);
然后就出乎意料的再一次的给我惊喜
第二次
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;@SuppressWarnings("all")
public class Main{public static void main(String [] args){Scanner scanner = new Scanner(System.in);String next = scanner.next();StringBuffer stringBuffer = new StringBuffer(next);stringBuffer.reverse();int length = stringBuffer.length();if(Integer.parseInt(next)>0) {for(int i=0;i<length;i++) {if(stringBuffer.charAt(i)=='0') {stringBuffer.delete(0, 1);}else break;}}else if (Integer.parseInt(next)==0) {} else {stringBuffer.delete(stringBuffer.length()-1, stringBuffer.length());for(int i=0;i<length;i++) {if(stringBuffer.charAt(i)=='0') {stringBuffer.delete(0, 1);}else {break;}stringBuffer.insert(0, '-');}}System.out.println(stringBuffer);
}
}
我输入
600
他输出06
我输入60
他直接报错
我dbug了一下
什么鬼???,我delete(0,1)在我的笔记是删除第0位置上的元素
然后,我眼睁睁的看着
stringbuffer存储的数组,的1索引的位置由‘0’变成‘6’
接下来我又
“懂了”,我真是有病啊,刚刚还说i增长的问题,其实
是这个
**if(stringBuffer.charAt(i)==‘0’)**判断条件的问题
我其实一直判断第一个字符就可以,因为它是一直减的
最终代码
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;@SuppressWarnings("all")
public class Main{public static void main(String [] args){Scanner scanner = new Scanner(System.in);String next = scanner.next();StringBuffer stringBuffer = new StringBuffer(next);stringBuffer.reverse();int length = stringBuffer.length();if(Integer.parseInt(next)>0) {for(int i=0;i<length;i++) {if(stringBuffer.charAt(0)=='0') {stringBuffer.delete(0,1);}else break;}}else if (Integer.parseInt(next)==0) {} else {stringBuffer.delete(stringBuffer.length()-1, stringBuffer.length());for(int i=0;i<length;i++) {if(stringBuffer.charAt(0)=='0') {stringBuffer.delete(0, 1);}else break;}stringBuffer.insert(0, '-');}System.out.println(stringBuffer);
}
}
思路
1.用stringbuffer解决反转问题
2.内部细节->0/<0/=0处理不一样,分开处理
3.>0很简单,就一个个判断是0删除就ok
4.=0更简单,不用处理
5.<0,先删除最后的-号,然后开始像>0这样一个个判断删除,最后在开头添加-号
总结
对应变量的掌握不太熟练
就是他自身(操作的对象)就变,你的位置始终其实都在1位就能确定
不用根据i行事了,固化思维
还有就是我注意到
StringBuffer.delete不是真正删除对应的属性的,里面有一个count,来计数有几个有效字符,好像内部是运用替换还是什么的,把删除字符弄到最后,然后count-删除字符,就是我们想要的字符串了
相关文章:

P1307 [NOIP2011 普及组] 数字反转
[NOIP2011 普及组] 数字反转 题目描述 给定一个整数 NNN,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。 输入…...

【服务器数据恢复】NetApp存储无法访问的数据恢复案例
服务器数据恢复环境: NetApp某型号存储; 配备SAS硬盘,该硬盘520字节一个扇区; 所有的lun映射到小型机使用,存放Oracle数据库文件,采用ASM裸设备存储方式。 服务器故障: 管理员误操作删除NetApp…...

(考研湖科大教书匠计算机网络)第四章网络层-第三节2:分类编址的IPv4地址
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:分类IP地址概述二:各类地址详解(1)A类地址(2)B类地址(3)C类地址…...

Allegro移动器件时附带的孔和线被同步更改的原因和解决办法
Allegro移动器件时附带的孔和线被同步更改的原因和解决办法 用Allegro做PCB设计的时候,移动器件的时候,会出现附带的孔和线也会被同步更改,有时并不是期望的效果,如下图 Allegro其实将这个功能关闭即可,具体操作如下 选择Edit点击Move命令...

工程监测多通道振弦模拟信号采集仪VTN参数修改
工程监测多通道振弦模拟信号采集仪VTN参数修改 1 使用按键修改参数 使用按键修改某个参数的方法如下: (1)在系统参数查看页面(PXX 页面),按【SWITCH】或【SETTING】按键切换到要修改的参数项。 (…...

【算法】差分
作者:指针不指南吗 专栏:算法篇 🐾合理规划时间与精力🐾 1.什么是差分? 与前缀和是反函数 原数组a a1 , a2 , a3 , a4 , a5 , a6 , a7 构造数组b a1b1; a2b1b2; a3b1b2b3; … aib1b2b3…bi; 构造一个b数组使得&#…...

【LeetCode】剑指 Offer(1)
目录 写在前面: 题目1:剑指 Offer 03. 数组中重复的数字 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 题目2:剑指 Offer 06. 从…...

linux rancher 清理docker容器磁盘空间
目录说明 /var/lib/docker/containers: 是 Docker 在 Linux 系统上默认存储容器信息的目录。在该目录下,每个运行的 Docker 容器都有一个单独的目录,以容器 ID 命名,其中包含有关该容器的元数据和日志文件。 具体来说࿰…...
移动端兼容性问题集锦
前言 去年主要工作就是混合开发,写app内嵌的h5。在开发期间多多少少遇到些兼容性问题,最近工作比较清闲,整理下方便以后查阅,也希望能帮助到一些同学。 并且本文会持续补充内容,欢迎关注我,另外我会更新一…...

【Spark分布式内存计算框架——Spark SQL】4. DataFrame(上)
3.1 DataFrame是什么 在Spark中,DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。DataFrame与RDD的主要区别在于,前者带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。 使…...

GPS通信
目录 一、GPS启动的方式 二、GPS经纬度坐标转换 三、GPS定位和网络定位 四、3D定位和2D 定位 五、同步GPS时间到本地时间 六、卫星分布对GPS performance有很大影响吗 一、GPS启动的方式 热启动:指在上次关机的地方没有过多移动过,且距离上次定位…...

Java高频面试题,ReentrantLock 是如何实现锁公平和非公平性的?
我先解释一下个公平和非公平的概念。 公平,指的是竞争锁资源的线程,严格按照请求顺序来分配锁。 非公平,表示竞争锁资源的线程,允许插队来抢占锁资源。 ReentrantLock 默认采用了非公平锁的策略来实现锁的竞争逻辑。 其次&…...

「JVM 原理使用」 实际开发中的应用
Class 文件格式、执行引擎主要以 Class 文件描述了存储格式、类何时加载、如何连接、VM 如何执行字节码指令,这些动作基本都是 JVM 直接控制,用户代码无法干预和改变; 用户可以干预的只有字节码生成、类加载器两部分,而这两部分的…...

最最普通程序员,如何利用工资攒够彩礼,成为人生赢家
今天我们不讲如何提升你的专业技能去涨工资,不讲面试技巧如何跳槽涨工资,不讲如何干兼职赚人生第一桶金,就讲一个最最普通的程序员,如何在工作几年后,可以攒够彩礼钱,婚礼酒席钱,在自己人生大事…...

脏话越多,代码越好!
你在读开源代码的时候有没有遇到过这种注释?What the fuck ?Dude,WTFFuck this !我遇到过,每次都忍不住笑,心想老外可真是性情中人,遇到不爽的地方就开骂,还直接写到注释中,甚至代码中。Bob大叔…...

【Node.js】模块化
模块化模块化的基本概念模块化规范Node.js中模块化分类模块作用域向外共享模块作用域的成员Node.js中的模块化规范模块化的基本概念 指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程对于整个系统来说,模块是可组合,分解和更换…...

训练一个中文gpt2模型
前言 这是我的github上的一个介绍,关于如何训练中文版本的gpt2的。链接为: https://github.com/yuanzhoulvpi2017/zero_nlp 介绍 本文,将介绍如何使用中文语料,训练一个gpt2可以使用你自己的数据训练,用来:写新闻、…...
python文件头规范和函数注释自动生成(pycharm)
#!/usr/bin/env python # -*- coding: utf-8 -*- """ Time : ${DATE} ${TIME} Author : xxx Email : xxxxxx.comFileName: ${NAME}.py Software: ${PRODUCT_NAME} """if __name__ __main__:print(Python)pycharm python文件头规范和函数注…...
Fluent Python 笔记 第 17 章 使用 future 处理并发
future 指一种对象,表示异步执行的操作。这个概念的作用很大,是 concurrent.futures 模块和 asyncio 包(第 18 章讨论)的基础。 17.1 示例:网络下载的三种风格 17.1.1 依序下载的脚本 17.1.2 使用 concurrent.futures 模块下载 from concurrent impo…...

Android进阶之路 - StringUtils、NumberUtils 场景源码
忘记是在去年还是前年的时候遇到一个需要检测所传字符串是否为数字的场景,开始使用 NumberUtils.isNumber() 提示错误 ,没有解决问题(可能是因为依赖版本导致),最后使用的是StringUtils.isNumeric(),当时关…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...