当前位置:网站首页>计算数字区间中数字出现次数
计算数字区间中数字出现次数
2022-08-10 05:36:00 【yeah_you_are】
问题描述
输入两个数n,x(x<=n),找到[x,n]之间数字x出现的次数,只统计数字出现的次数,不需要考虑数字是在个位、十位、百位等位置,将统计结果返回。
比如:n=11,x=1,返回结果4。
1出现1一次,10出现1一次,11出现1两次,所以结果为4。
代码及解析
public int solution(int n,int x) {
int result = 0;
//遍历x到n的所有数字
for (int i=x;i<=n;i++) {
int num = i;
//得到数字的长度
int j = String.valueOf(num).length();
//循环得到数字的各个位上的数值
for (;j>0;j--) {
int p = new Double(Math.pow(10, j-1)).intValue();
//得到各个位上的数字
int b = num / p;
//数字比较
if (b == x) result ++;
//取余重新赋值
num = num % p;
}
}
return result;
}
思考:
其实按照问题给的示例数值11和1去编写处理逻辑会留下一个坑,就是编写代码时很容易给输入的x做了一个默认假设,默认x的长度只有1,只考虑了n的长度变化而忽略了x的长度变化,上面的代码就是只处理了x为一位数的情况,当x为两位数或者三位数时则无法适用,所以需要改进。
改进后:
public int solution(int n, int x) {
int result = 0;
//转换为目标字符串
String goal = String.valueOf(x);
//得到其数字的长度
int len = goal.length();
//遍历x到n的所有数字
for (int i=x;i<=n;i++) {
String num = String.valueOf(i);
//循环分割字符串
for (int j = 0;j <= num.length() - len;j++) {
//得到连续的定长字符串
String sub = num.substring(j, j + len);
//与目标字符串比较
if (goal.equals(sub)) result++;
}
}
return result;
}
测试输入:n=120,x=11,结果:12
11是一次,110到119出现11总共11次,其中111出现2次,所以结果为12。
改进后,将数字问题改为了字符串匹配问题,将数字做定长切割得到待比较的字符串,然后与目标字符串比较即可。这里需要注意的就是循环的限制条件,也就是边界限定问题。
边栏推荐
猜你喜欢

STM32F407ZG GPIO输出相关实验

LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)

LeetCode 2011. Variable Value After Action (Simple)

pytorch-06. Logistic regression

2021-04-15 jacoco代码覆盖率统计和白盒测试

Tkinter 模块学习

Test of the opposite sex what you look like?

STM32单片机手机APP蓝牙高亮RGB彩灯控制板任意颜色亮度调光

LeetCode 938.二叉搜索树的范围和(简单)

以STM32F103C6T6为例通过配置CubeMX实现EXIT外部中断
随机推荐
pytorch-05. Implementing linear regression with pytorch
探究乱码问题的本源:GBK,UTF8,UTF16,UTF8BOM,ASN1之间的关联
从交换两数据值看指针的使用(c语言实现)
【C语言】结构体变量学习笔记1
STM32F407ZG TIM通用定时器
LeetCode Interview Question 17.14 Minimum k Number (Moderate)
LeetCode 1351. Counting Negative Numbers in Ordered Matrices (Simple)
Convolutional Neural Network (CNN) for Clothing Image Classification
屏幕后期处理之:Sobel算子实现边缘检测
STM32单片机OLED俄罗斯方块单片机小游戏
STM32F407ZG 串口通信+固定帧头帧尾传输数据帧
pytorch-08. Load dataset
Deep learning TensorFlow entry environment configuration
在Unity中利用代码动态更改场景中的天空盒
pytorch-10. Convolutional Neural Networks
【fiddler4】使用fiddler设置简单并发
二维卷积定理的验证(下,cv2.filter2D())
常用模块封装-csv文件操作封装
深度学习阶段性报告(一)
过大数组导致爆栈的解决方法记录(堆栈)